jsp中(String)request.getAttribute("userid")获取为空
时间: 2024-06-03 13:12:53 浏览: 111
如果 `(String)request.getAttribute("userid")` 获取为空,有以下几种可能的原因:
1. 该属性在请求中并不存在。可能是在前一个页面中没有设置,或者在请求中被重置了。
2. 该属性在请求中存在,但是它的值为空。可以通过在设置属性时检查值是否为空来避免此情况。
3. 该属性在请求中存在,但是在获取属性值时使用了错误的属性名。请确保使用正确的属性名。
你可以在设置属性时使用 `request.setAttribute("userid", "xxxxx")` 来设置属性值。如果你已经确定该属性存在于请求中,可以尝试使用 `request.getParameter("userid")` 来获取属性值。此外,还可以在 JSP 页面中使用 EL 表达式 `${userid}` 来获取属性值。
相关问题
switch (method){ case "findAll": if(session.getAttribute("userName")!=null){ String userName= (String) session.getAttribute("userName"); String userId= userRepository.finduserId(userName); List<Contact> list = contactRepository.findAll(userId); req.setAttribute("list_contact",list); System.out.println(list); req.getRequestDispatcher("/index.jsp").forward(req,resp); // if (session.getAttribute("userName")!=null){ // req.getRequestDispatcher("/index.jsp").forward(req,resp); // } // else if(session.getAttribute("adminuserName")!=null){ // req.getRequestDispatcher("/adminAdress.jsp").forward(req,resp); // } } else if(session.getAttribute("adminuserName")!=null){ String userName= (String) session.getAttribute("userName"); List<Contact> list = contactRepository.findAll(); req.setAttribute("list_contact",list); System.out.println(list); req.getRequestDispatcher("/adminAdress.jsp").forward(req,resp); // if (session.getAttribute("userName")!=null){ // req.getRequestDispatcher("/index.jsp").forward(req,resp); // } // else if(session.getAttribute("adminuserName")!=null){ // req.getRequestDispatcher("/adminAdress.jsp").forward(req,resp); // } } break; case "deleteById": String id = req.getParameter("id"); contactRepository.deleteById(id); resp.sendRedirect("contact"); break;
这段代码使用了switch-case语句来处理不同的method参数值。
在"findAll"的情况下,代码首先检查session中是否存在"userName"属性。如果存在,则获取该属性的值作为userName,并通过userRepository.finduserId方法获取对应的userId。接着,调用contactRepository.findAll(userId)方法来获取该用户的所有联系人信息,并将结果存储在名为"list_contact"的request属性中。然后,通过req.getRequestDispatcher方法将请求转发到"/index.jsp"页面,以显示联系人列表。
如果session中不存在"userName"属性,而存在"adminuserName"属性,则进入else if分支。在该分支中,直接调用contactRepository.findAll方法获取所有联系人信息,并将结果存储在名为"list_contact"的request属性中。然后,通过req.getRequestDispatcher方法将请求转发到"/adminAdress.jsp"页面,以显示管理员的联系人列表。
在"deleteById"的情况下,代码通过req.getParameter方法获取id参数的值,并调用contactRepository.deleteById方法来删除指定id的联系人信息。然后,通过resp.sendRedirect方法将请求重定向到"contact"页面,以继续执行其他操作。
需要注意的是,这段代码只是一个片段,其中的其他代码(如userRepository和contactRepository对象的实现)并没有完整地展示出来。你需要根据具体情况进行适当的修改和完善。
java webapp项目中 index.jsp认证用户名存在并session.setAttribute("userid", userid);当response.sendRedirect("main.jsp");到另一个jsp中main,jsp如何获取index.jsp中的用户名
在Java Web应用程序中,如果你从`index.jsp`页面设置了用户ID作为会话属性(`session.setAttribute("userid", userid)`),然后通过`response.sendRedirect("main.jsp")`跳转到`main.jsp`,那么在`main.jsp`中获取这个用户名需要使用服务器端的会话管理功能。
1. **通过JSP EL表达式**: 在`main.jsp`中,你可以直接在HTML标签内使用EL表达式来获取会话属性:
```html
<%@ page session="true" %>
<p>欢迎 ${session.getAttribute("userid")}!</p>
```
这将显示存储在会话中的用户名。
2. **使用Java代码**: 如果你想在`main.jsp`的Java代码部分获取,可以这样做:
```java
String userId = (String) request.getSession().getAttribute("userid");
out.println("欢迎 " + userId + "!");
```
这里假设`out`是一个ServletOutputStream,用于向浏览器发送响应内容。
注意,在跨域请求中,为了安全考虑,浏览器可能会阻止直接读取其他域名下的会话信息。在这种情况下,你需要在后端提供一个服务(例如REST API)来传递用户名。
阅读全文