首先我们要实现两个过滤器其实很简单,我们需要准备好两个jsp一个是登录的jsp(我这里使用login.jsp),一个是登录成功的jsp(loginsuccess.jsp),一个servlet,两个过滤器,一个过滤器在 web 服务时,起用 UTF-8 编码,以处理 web 服务时的乱码问题。 另一个过滤器用来判断用户是否登录,其中我们要将登录成功的界面即loginsuccess.jsp放到/view界面下,我这个并不使用与数据库交互,只是简单的在servlet中来设置登录账号和密码
这里的简单结构示意图如下
因为比较简单,我们这里直接上代码
LoginServlet.java
package com.chen;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
//获取用户名和密码
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username+password);
session.setAttribute("username", username);
//验证用户名和密码
if ("admin".equals(username) && "123456".equals(password)){
//验证成功
req.getRequestDispatcher("/view/loginsuccess.jsp").forward(req, resp);
//将用户状态存入session域
}else{
req.setAttribute("errerMsg", "用户名密码错误");
req.getRequestDispatcher("/login.jsp").forward(req, resp);
}
}
}
接下来是过滤器,过滤处理乱码的
SetCodingFilter.java
package com.filter;
import javax.servlet.*;
import java.io.IOException;
public class SetCodingFilter implements Filter {
private String coding = null;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
//设置请求编码
request.setCharacterEncoding(coding);
//调用下一个过滤器,(如果没有,就把请求提交给请求目标)
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
//获取filter初始化参数(web.xml文件中配置的参数)
coding = config.getInitParameter("coding");
}
}
这里是UserOnlineFilter.java也就是验证用户登录的
package com.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class UserOnlineFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest Servletrequest,
ServletResponse Servletresponse, FilterChain filterchain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest)Servletrequest;
HttpServletResponse response = (HttpServletResponse)Servletresponse;
HttpSession session = request.getSession();
String username = (String)session.getAttribute("username");
//验证用户是否登录(session对象中是否存在用户信息
if(username==null){
response.sendRedirect(request.getContextPath()+"/login.jsp");
}else{
filterchain.doFilter(Servletrequest, Servletresponse);
}
}
public void init(FilterConfig filterconfig) throws ServletException {
// TODO Auto-generated method stub
}
}
这是登录成功的loginsuccess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功界面</title>
</head>
<body>
<h1 align="center">恭喜你登录成功</h1>
</body>
</html>
这个是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_4_0.xsd"
version="4.0">
<filter>
<filter-name>SetCodingFilter</filter-name>
<filter-class>com.filter.SetCodingFilter</filter-class>
<init-param>
<param-name>coding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>UserOnlineFilter</filter-name>
<filter-class>com.filter.UserOnlineFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserOnlineFilter</filter-name>
<!-- 这个路径只用于数据交互页面。不能用"/"。否则的话就进不了页面了 -->
<url-pattern>/view/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.chen.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
这个是login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div align="center">
<h1>login</h1>
<form action="loginServlet" method="post">
username:<input type="text" name="username" placeholder="username"> <br/>
password:<input type="password" name="password" placeholder="password"> <br/><br>
<input type="submit" value="login"/>
</form>
</div>
</body>
</html>
我们所用到的就是上面这么多,谢谢。