web
<?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_4_0.xsd"
version="4.0">
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>com.media.filter.CharsetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>
LoginFilter
package com.media.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@WebServlet(name = "LoginServlet")
public class LoginFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
String uri = request.getRequestURI();
if (session.getAttribute("username") != null || isIgnore(uri)) {
chain.doFilter(request, response);
} else {
response.sendRedirect("login.jsp");
}
}
private boolean isIgnore(String uri){
for (String str:ignores){
if (uri.indexOf(str) != -1){
return true;
}
}
return false;
}
public void init(FilterConfig config) throws ServletException{
String ignore = config.getInitParameter("ignore");
ignore = ignore.split(",");
}
}
CharsetFilter
package com.media.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(filterName = "CharsetFilter")
public class CharsetFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
chain.doFilter(request,response);
}
public void init(FilterConfig config) throws ServletException {
}
}
LoginServlet
package com.media.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@WebServlet(name = "LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response)
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
if ("1".equals(request.getParameter("invalidate")) && session.getAttribute("username") !=null){
session.invalidate();
response.sendRedirect("login.jsp");
}
try{
Class.forName("com.mysql.jbdc.Driver");
String url = "jbdc:mysql://localhost:3306/book";
Connection connection = DriverManager.getConnection(url,"root","root");
String sql = "update user set username = ?, password = ?, age = ? where id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2,password);
ResultSet rs = ps.executeQuery();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
if (rs.next()){
session.setAttribute("username",username);
response.sendRedirect("home.jsp");
}else{
out.print("登录失败后,3秒之后跳转登录页面");
response.setHeader("refresh","3;url=login.jsp");
}
}catch (Exception e){
e.printStackTrace();
}
}
}