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(); } } }解释每一行代码
时间: 2024-02-14 13:11:41 浏览: 149
这段代码是一个 Java Servlet 中的方法,用于实现用户登录功能。下面是每一行代码的解释:
```
private void login() {
```
定义了一个名为 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 + "'");
```
调用 DALBase.load() 方法查询数据库,根据用户名和密码查找对应的用户信息。
```
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 {
```
如果用户信息存在,则将用户信息存入 session 中,并重定向到管理后台首页;否则返回登录界面并显示错误信息。
```
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();
}
```
在返回登录界面时,使用 dispatchParams() 方法将表单数据传递回登录页面,同时设置错误信息并输出到控制台。最后使用 request.getRequestDispatcher().forward() 方法将请求转发到登录页面。
阅读全文