我是靠谱客的博主 过时啤酒,最近开发中收集的这篇文章主要介绍Spring Mvc那点事---(19)Spring Mvc过滤器Filter实现登陆验证,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
上一节我们演示了过滤器Filter的基本用法,这一节我们通过实例来看下过滤器怎么实现用户登陆判断,如果用户登陆成功跳转到首页,如果用户未登陆,跳转到登陆页面。
1.用户登陆
首先我们天添加两个页面,一个是登陆页面login.jsp,一个是登陆成功后的index.jsp.
在login.jsp中我们添加两个用户名和密码文本输入文本框
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎你,登陆成功
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/Home/userLogin" method="post">
用户名:<input type="text" name="username">
<Br>
密码: <input type="password" name="pwd">
<input type="submit" value="登陆">
</form>
</body>
</html>
在后台我们添加controller方法
@Controller
@RequestMapping("/Home")
public class HomeController {
@RequestMapping(value="index")
public String Index()
{
return "index";
}
@RequestMapping(value="login")
public String Login()
{
return "login";
}
@RequestMapping(value="userLogin")
public String UserLogin(HttpServletRequest request,HttpServletResponse respnose,HttpSession httpSession) throws IOException
{
//登陆成功后,写入session
String userName=request.getParameter("username");
String pwd=request.getParameter("pwd");
System.out.println("登陆成功!"+"--"+userName);
httpSession.setAttribute("username", userName);
return "redirect:/Home/index";
}
}
}
我们添加过滤器filterFirst
package com.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class filterFirst implements Filter {
private FilterConfig config;
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy");
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
System.out.println("doFilter");
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
//获取初始化参数
String para=config.getInitParameter("nofilterpath");
System.out.println(para);
if(request.getRequestURI().indexOf("login")!=-1||request.getRequestURI().indexOf("Home/userLogin")!=-1)
{
arg2.doFilter(arg0, arg1);
return;
}
if(request.getSession().getAttribute("username")==null)
{
response.sendRedirect(request.getContextPath()+"/Home/login");
}
else
{
arg2.doFilter(arg0, arg1);
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
config=arg0;
}
}
配置web.xml
<!-- 自定义过滤器 -->
<filter>
<filter-name>firstfilter</filter-name>
<filter-class>com.filter.filterFirst</filter-class>
<!-- 设置初始化参数 -->
<init-param>
<param-name>nofilterpath</param-name>
<param-value>login</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>firstfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.初始化参数
在filter中我们可以设置初始化参数,在web.xml中通过<init-parm>来进行设置,param-name表示参数名称,parm-value表示参数值
在filter中,我们可以获取参数,使用FilterConfig进行获取,在init中进行初始化
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
config=arg0;
}
最后
以上就是过时啤酒为你收集整理的Spring Mvc那点事---(19)Spring Mvc过滤器Filter实现登陆验证的全部内容,希望文章能够帮你解决Spring Mvc那点事---(19)Spring Mvc过滤器Filter实现登陆验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复