1>cookie,实现登录的时候,记住我
2>filter:实现编码过滤器。
思考 如何实现访问servlet的时候,必须登录后才能访问。
1.
serverIn.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
用户信息
<%
Cookie[] cookies = request.getCookies();
if (cookies != null){
System.out.println(cookies.length);
for (int i = 0; i < cookies.length; i++){
if (cookies[i].getName() != null &&cookies[i].getValue() != null);
response.sendRedirect("serverShow.do");
}
}
%>
loginServer.java:
package action;
import dao.UsersDao;
import impl.UsersDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/login.do")
public class loginServer extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
req.setCharacterEncoding("UTF-8");
String name = req.getParameter("user_name");
String password = req.getParameter("password");
String re = req.getParameter("remember");
if (re != null){
Cookie cookie_N = new Cookie("name",name);
Cookie cookie_P = new Cookie("name",password);
cookie_N.setMaxAge(60);
cookie_P.setMaxAge(60);
resp.addCookie(cookie_N);
resp.addCookie(cookie_P);
}
UsersDao usersDao = new UsersDaoImpl();
boolean yn = usersDao.find(name, password);
if (yn){
resp.sendRedirect("serverShow.do");
}else {
req.setAttribute("wrong", "用户名或密码错误");
req.getRequestDispatcher("serverLogin.jsp").forward(req, resp);
}
req.setAttribute("user",yn);
}
}
2.
CodeFilter.java:
package utils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class CodeFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(servletRequest, servletResponse);
}
public void init(FilterConfig filterConfig) throws ServletException{
}
}
MyFilter.java:
package utils;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
选中“自动登录”后可跳过登陆界面:



