jsp页面使用以下语句 :当前用户:<%=request.getSession().getAttribute("username") %>,页面显示用户:null
时间: 2024-02-12 07:05:09 浏览: 38
如果页面显示的是 "用户:null",那么有可能是当前用户并没有登录或者登录时没有将用户名放入session中。
你可以检查以下几个方面:
1. 确认当前用户是否已经登录。如果没有登录,那么就无法获取到用户名。
2. 确认登录时是否将用户名放入session中。可以在登录时使用类似以下代码将用户名放入session中:
```
request.getSession().setAttribute("username", username);
```
3. 确认是否使用了正确的session key。如果在登录时使用的是"username"作为session key,那么在获取时也必须使用同样的key。
如果以上三个方面都没有问题,那么可以尝试在页面上输出一些调试信息,如:
```
当前session id:<%=request.getSession().getId()%>
```
这样可以确定是否获取到了正确的session对象。如果还是无法解决问题,可以尝试查看日志或者debug模式来进行调试。
相关问题
private void login() { String username = request.getParameter("username"); String password = request.getParameter("password"); String usertype = request.getParameter("usertype"); String action = request.getParameter("action"); String validcode=(String)request.getSession().getAttribute("validcode"); String inputvalidcode=request.getParameter("validcode"); System.out.println("验证码="+validcode); if (usertype != null && usertype.equals("0")) { Users u = (Users) DALBase.load("users", " where username='" + username + "' and password='" + password + "'"); if (u != null) { HttpSession session = request.getSession(); session.setAttribute("adminuser", u); try { response.sendRedirect(SystemParam.getSiteRoot() + "/admin/index.jsp"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { // 分发 dispatchParams(request, response); request.setAttribute("errmsg",MessageFormat.format("< img src=\"{0}/admin/images/icon_wrong.png\"/>用户与密码不匹配",SystemParam.getSiteRoot())); System.out.println("系统用户登录失败"); try { request.getRequestDispatcher( "/admin/login.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }解释每一行代码
这段代码是一个登录功能的实现。下面逐行解释:
1. `private void login() {`:定义了一个名为login的私有方法,没有参数。
2. `String username = request.getParameter("username");`:从request对象中获取名为"username"的参数值,存储在字符串变量username中。
3. `String password = request.getParameter("password");`:从request对象中获取名为"password"的参数值,存储在字符串变量password中。
4. `String usertype = request.getParameter("usertype");`:从request对象中获取名为"usertype"的参数值,存储在字符串变量usertype中。
5. `String action = request.getParameter("action");`:从request对象中获取名为"action"的参数值,存储在字符串变量action中。
6. `String validcode=(String)request.getSession().getAttribute("validcode");`:从request的session对象中获取名为"validcode"的属性值,存储在字符串变量validcode中。
7. `String inputvalidcode=request.getParameter("validcode");`:从request对象中获取名为"validcode"的参数值,存储在字符串变量inputvalidcode中。
8. `System.out.println("验证码="+validcode);`:打印出"验证码="和变量validcode的值。
9. `if (usertype != null && usertype.equals("0")) {`:如果usertype不为空且等于"0",则进入if语句块。
10. `Users u = (Users) DALBase.load("users", " where username='" + username + "' and password='" + password + "'");`:调用名为DALBase的类的load方法,从名为"users"的表中查询用户名和密码与传入的参数匹配的记录,将结果存储在名为u的Users对象中。
11. `if (u != null) {`:如果u不为空,则进入if语句块。
12. `HttpSession session = request.getSession();`:从request对象中获取session对象,存储在名为session的HttpSession变量中。
13. `session.setAttribute("adminuser", u);`:将名为"adminuser"的属性值设为u。
14. `try { response.sendRedirect(SystemParam.getSiteRoot() + "/admin/index.jsp"); } catch (IOException e) { e.printStackTrace(); }`:重定向到"/admin/index.jsp"页面。
15. `} else {`:否则,进入else语句块。
16. `dispatchParams(request, response);`:调用名为dispatchParams的方法,将request和response对象传入。
17. `request.setAttribute("errmsg",MessageFormat.format("< img src=\"{0}/admin/images/icon_wrong.png\"/>用户与密码不匹配",SystemParam.getSiteRoot()));`:向request对象中添加名为"errmsg"的属性,属性值为字符串格式化后的错误信息。
18. `System.out.println("系统用户登录失败");`:打印出"系统用户登录失败"。
19. `try { request.getRequestDispatcher( "/admin/login.jsp").forward(request, response); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }`:将请求转发到"/admin/login.jsp"页面。
if(ac.equals("adminlogin")) { String username = request.getParameter("username"); String password = request.getParameter("pwd"); String utype = request.getParameter("cx"); String pagerandom = request.getParameter("pagerandom")==null?"":request.getParameter("pagerandom"); String random = (String)request.getSession().getAttribute("random"); if(!pagerandom.equals(random)&&request.getParameter("a")!=null) { request.setAttribute("random", ""); go("/login.jsp", request, response); } else{ String sql1 = "select * from allusers where username='"+username+"' and pwd='"+password+"' "; List<HashMap> userlist1 = dao.select(sql1); if(userlist1.size()==1) { request.getSession(). setAttribute("username", userlist1.get(0).get("username")); request.getSession(). setAttribute("cx", userlist1.get(0).get("cx")); gor("main.jsp", request, response); }else{ request.setAttribute("error", ""); go("/login.jsp", request, response); } } }这段代码是什么意思
这段代码是一个Java Servlet中的一个if语句块,用于处理用户登录功能。首先,从请求中获取用户输入的用户名、密码、用户类型和验证码等信息。然后,将用户输入的验证码与系统生成的验证码进行比较,如果不相等并且参数a不为null,就清空验证码并跳转回登录页面。如果验证码相等,就从数据库中查询用户名和密码是否匹配,如果匹配则将用户名和用户类型存入Session中,然后跳转到主页面,否则显示错误信息并跳转回登录页面。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)