*思路:
1、获取表单提交数据
2、与后台数据库校验用户名密码是否存在且正确
3、校验完成后,设置session,跳转到首页
4、注销,删除session,跳转到登录页面*
目录结构:
web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>session</servlet-name>
<servlet-class>ser.david.SessionDemo.SessionDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>session</servlet-name>
<url-pattern>/session</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>delSession</servlet-name>
<servlet-class>ser.david.SessionDemo.DelSession</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>delSession</servlet-name>
<url-pattern>/delSession</url-pattern>
</servlet-mapping>
</web-app>
步骤:
1、写表单页面index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/session" method="post">
用户名:<input type="text" name="username"> <br/>
密码:<input type="text" name="password"><br/>
<input type="submit" value="登录">
</form>
</body>
</html>
2、模拟数据库、新建User类,DB类
User类:
package ser.david.SessionDemo;
public class User {
private String username;
private String password;
public User() {
super();
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
DB类:
package ser.david.SessionDemo;
import java.util.ArrayList;
import java.util.List;
class DB {
public static List list = new ArrayList();
static {
list.add(new User("aaa", "123"));
list.add(new User("bbb", "123"));
list.add(new User("ccc", "123"));
}
public static List getList() {
return list;
}
}
3、新建SessionDemo,获取表单数据并与数据库比对。。。成功后设置session并跳转到首页
package ser.david.SessionDemo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
public class SessionDemo extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
List<User> list = DB.getList();
for (User user : list) {
if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
request.getSession().setAttribute("user", user);
response.sendRedirect("/index.jsp");
return;
}
}
out.print("用户名或密码错误");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
4、新建首页index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
欢迎您:${user.username}<a href="/delSession">退出登录(删除session)</a>
</body>
</html>
5、新建DelSession完成注销,删除session,跳转到登录页面
package ser.david.SessionDemo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class DelSession extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession();
if (session==null){
response.sendRedirect("/index.html");
return;
}
session.removeAttribute("user");
response.sendRedirect("/index.html");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
ok,到这就完成了,下面是效果图:
填写表单->登录->退出登录
当验证不通过时: