您的位置:首页 > 编程语言 > Java开发

Java 利用过滤器Filter 实现登录过滤

2016-03-10 19:20 561 查看
本次的demo一共包含3个页面

1.登录页面   /LoginTest/Login/index.html

2.登录成功页面【加入了登录验证,必须登录后才能访问】   /LoginTest/Home/index.html

3.登录失败页面  /LoginTest/Login/ErrorPage.html

数据库连接不再赘述,如有疑问,移步至:点击打开链接

首先 在未登录的情况下访问页面1,请求会被重定向到页面2



然后 在登录页输入错误的用户名会重定向到页面3



最后返回到页面2输入正确用户名和密码,会被重定向到页面1



项目目录结构如下



相关代码:

过滤器

package cn.xyj.study;

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;
import javax.servlet.http.HttpSession;

public class LoginCheckFilter implements Filter
{

private String url;
@Override
public void destroy()
{

}

@Override
public void doFilter(ServletRequest request, ServletResponse respose,
FilterChain chain) throws IOException, ServletException
{

HttpServletRequest httprequest=(HttpServletRequest)request;
HttpServletResponse httprespose=(HttpServletResponse)respose;

HttpSession session=httprequest.getSession();

if(session.getAttribute("uid")==null)
{
httprespose.sendRedirect(url);
}

chain.doFilter(request, respose);

}

@Override
public void init(FilterConfig config) throws ServletException {
url=config.getInitParameter("ErrorPage");
System.out.println("----------------url="+url);
}

}


配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name>

<!--   servlet开始 -->
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginController</servlet-name>
<servlet-class>cn.xyj.study.LoginController</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/servlet/Login</url-pattern>
</servlet-mapping>
<!--   servlet结束	 -->

<!--   过滤器开始 -->
<filter>
<filter-name>LoginCheckFilter</filter-name>
<filter-class>cn.xyj.study.LoginCheckFilter</filter-class>
<init-param>
<param-name>ErrorPage</param-name>
<param-value>/LoginTest/Login/index.html</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>LoginCheckFilter</filter-name>
<url-pattern>/Home/*</url-pattern>
</filter-mapping>
<!--   servlet结束 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


Servlet 

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws  ServletException, IOException   {
request.setCharacterEncoding("utf-8");
String uid= (String) request.getParameter("uid");
String psw= (String) request.getParameter("psw");

String tip="默认提示";
String sql="select * from T_User where UserName='"+uid+"' and Pwd='"+psw+"'";
ResultSet rs=SqlHelper.executeQuery(sql);
try {
if(rs.next())
{
HttpSession session=request.getSession();
session.setAttribute("uid", uid);
response.sendRedirect("/LoginTest/Home/index.html");

}
else
{
response.sendRedirect("/LoginTest/Login/ErrorPage.html");

}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


登录页

<form name="f1" id="f1" action="/LoginTest/servlet/Login" method="post">
<table border="0">
<tr>
<td>用户名:</td>
<td><input type="text" name="uid" id="login"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="psw" id="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: