*思路:
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,到這就完成了,下面是效果圖:
填寫表單->登錄->退出登錄
當驗證不通過時: