Struts 中Filter的使用
来源:互联网 发布:缓存数据可以清除吗 编辑:程序博客网 时间:2024/05/22 04:54
1 web.xml里添加filter配置信息。
<filter>
<filter-name>Authentication</filter-name>
<filter-class>
com.nova.colimas.web.filters.AuthenticationFilter
</filter-class>
<init-param>
<param-name>onError</param-name>
<param-value>/pages/index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Authentication</filter-name>
<url-pattern>/protect/*</url-pattern>
</filter-mapping>
<filter-class>定义使用com.nova.colimas.web.filters.AuthenticationFilter类执行过滤Action。
<init-param>当验证失败后Forward到/pages/index.jsp
<filter-mapping>只有当地址包括/protect/时运行filter类
2 实现com.nova.colimas.web.filters.AuthenticationFilter
package com.nova.colimas.web.filters;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.Filter;import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import com.nova.colimas.web.bean.UserBean;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;import org.apache.struts.Globals;
import org.apache.struts.action.*;
import com.nova.colimas.web.constants.Constants;
/**
* Filter implementation for user authentication。必须实现Filter接口
* @author tyrone * @version $Id: AuthenticationFilter.java,v 1.0
*/public class AuthenticationFilter implements Filter{
/**
* filterConfig will store the reference of FilterConfig
*/ private FilterConfig filterConfig;
private String onErrorUrl;
/**
* store the reference of the FilterConfig.
* @param config FilterConfig object
* @throws ServletException
*/ public void init(FilterConfig config) throws ServletException
{//获得验证失败forward地址
filterConfig = config;
onErrorUrl=filterConfig.getInitParameter("onError");
if (onErrorUrl==null || "".equals(onErrorUrl)){
onErrorUrl="/pages/index.jsp";
}
}
/**
* User Authentication is done. If User is authenticated successful then
* control is transferred to logon URI
* @param ServletRequest Request
* @param ServletRequest Response
* @param FilterChain Filter Chain
* @throws ServletException,IOException
*/ public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
throws IOException, ServletException
{
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletResponse httpResponse=(HttpServletResponse)response;
// Current session
HttpSession httpSession = httpRequest.getSession();
//Session里是否有用户信息。
if (httpSession.getAttribute(Constants.USER_KEY) == null)
{
ActionErrors errors=new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error authentication"));
httpRequest.setAttribute(Globals.ERROR_KEY,errors);
//没有,验证失败forward到/pages/index.jsp
httpRequest.getRequestDispatcher(onErrorUrl).forward(httpRequest,httpResponse);
}else//成果过滤Action结束
next.doFilter(request,response);
}
/**
* destroy() method is called by the servlet container
*/ public void destroy()
{
}
}
<filter>
<filter-name>Authentication</filter-name>
<filter-class>
com.nova.colimas.web.filters.AuthenticationFilter
</filter-class>
<init-param>
<param-name>onError</param-name>
<param-value>/pages/index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Authentication</filter-name>
<url-pattern>/protect/*</url-pattern>
</filter-mapping>
<filter-class>定义使用com.nova.colimas.web.filters.AuthenticationFilter类执行过滤Action。
<init-param>当验证失败后Forward到/pages/index.jsp
<filter-mapping>只有当地址包括/protect/时运行filter类
2 实现com.nova.colimas.web.filters.AuthenticationFilter
package com.nova.colimas.web.filters;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.Filter;import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import com.nova.colimas.web.bean.UserBean;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;import org.apache.struts.Globals;
import org.apache.struts.action.*;
import com.nova.colimas.web.constants.Constants;
/**
* Filter implementation for user authentication。必须实现Filter接口
* @author tyrone * @version $Id: AuthenticationFilter.java,v 1.0
*/public class AuthenticationFilter implements Filter{
/**
* filterConfig will store the reference of FilterConfig
*/ private FilterConfig filterConfig;
private String onErrorUrl;
/**
* store the reference of the FilterConfig.
* @param config FilterConfig object
* @throws ServletException
*/ public void init(FilterConfig config) throws ServletException
{//获得验证失败forward地址
filterConfig = config;
onErrorUrl=filterConfig.getInitParameter("onError");
if (onErrorUrl==null || "".equals(onErrorUrl)){
onErrorUrl="/pages/index.jsp";
}
}
/**
* User Authentication is done. If User is authenticated successful then
* control is transferred to logon URI
* @param ServletRequest Request
* @param ServletRequest Response
* @param FilterChain Filter Chain
* @throws ServletException,IOException
*/ public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
throws IOException, ServletException
{
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletResponse httpResponse=(HttpServletResponse)response;
// Current session
HttpSession httpSession = httpRequest.getSession();
//Session里是否有用户信息。
if (httpSession.getAttribute(Constants.USER_KEY) == null)
{
ActionErrors errors=new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error authentication"));
httpRequest.setAttribute(Globals.ERROR_KEY,errors);
//没有,验证失败forward到/pages/index.jsp
httpRequest.getRequestDispatcher(onErrorUrl).forward(httpRequest,httpResponse);
}else//成果过滤Action结束
next.doFilter(request,response);
}
/**
* destroy() method is called by the servlet container
*/ public void destroy()
{
}
}
- Struts 中Filter的使用
- struts 中filter使用控制session
- Struts(6)Struts框架中使用filter过滤关键词
- Struts的中文filter
- JSP中Filter的使用
- jquery中filter的使用
- Hbase中Filter的使用
- angular中filter的使用
- Vue中filter的使用
- struts中文乱码使用filter
- struts 2(ActionServlet、Filter)的使用记录
- struts【3】(<filter-mapping>中的dispatcher的使用)
- struts中的filter的用法
- Struts中tiles的使用
- Struts中DownloadAction的使用
- struts中CSS的使用。
- Struts中DispatchAction的使用.
- struts中DispatchAction的使用
- 淘宝上买家与卖家的对话[转贴]笑S
- 梳理下自己这几年的工作与知识
- Java开发工程师是怎样炼成的------按钮篇(Buttons)之一
- P2P之UDP穿透NAT的原理与实现(附源代码)
- 误解,我却无力辩解!
- Struts 中Filter的使用
- 2006-08 贵州5日之行
- JavaMail API简介
- 新来的女同事超强好色语录(暴笑)
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- 给予也是一种幸福
- 用代码实现"停用/启用"网络连接
- xsl中插入HTML特殊符号
- shell - 关于expr的用法zz