我做了一个过滤器(结合struts和hibernate),我的意图是:如果用户直接访问需要登录才能访问到的管理页面,则先跳转到提示页面之后五秒自动跳转到登录页面。可是结果因为把整个web应用都过滤了,所以当请求跳转到登录页面时又因为没有登录而又跳转到提示页面,之后一直循环。
我开始本想把登录页面另建立在一个目录下,之后在配置文件中设置过滤其他文件,而登录页面所在的目录资源不予以过滤,这样一来,还要重新去配置怎么过滤action。而且我也不知道怎么去过滤action。比如说com.zhang.action包下有actioncollected类delete方法,对应的action是delete,怎么在过滤器中配置?
附带web.xml部分代码: <filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.zhang.util.FilterAll</filter-class>
<init-param>
<param-name>loginPage</param-name>
<param-value>/Login.jsp</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 有没有更好的办法 ?
我开始本想把登录页面另建立在一个目录下,之后在配置文件中设置过滤其他文件,而登录页面所在的目录资源不予以过滤,这样一来,还要重新去配置怎么过滤action。而且我也不知道怎么去过滤action。比如说com.zhang.action包下有actioncollected类delete方法,对应的action是delete,怎么在过滤器中配置?
附带web.xml部分代码: <filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.zhang.util.FilterAll</filter-class>
<init-param>
<param-name>loginPage</param-name>
<param-value>/Login.jsp</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 有没有更好的办法 ?
解决方案 »
- JSP显示调用Servlet里面的List
- 酒店上传文件JAVA示例,有知道这个接口用PB怎么做吗?
- 郁闷啊!同样跳转到一个页面为什么就显示不了呢?
- 在Tomcat执行完servlet跳转到jsp页面的时候,页面有错误,可是IE里面只是白屏,并没有错误信息,需要配置一下Tomcat吗?
- 刚学JAVA,一个小问题
- ▲▲▲请问Web开发工具哪个好,php,jsp,javascript,.net????▲▲▲
- JSP在国外的应用情况(在外国或外企或国内知名软件公司工作过的请进)
- 怎样把选中的checkbox传给applet 急急!!!
- 用jdom怎样建立xml文件对应的映射文件,映射数据库,xml,java类三者的关系?有什么模板可以简化映射文件的建立吗?
- 请问写好的servlet文件(*.java)如何被编译成class文件?在线等
- 微博【转发有奖】的原理,求真相
- 字符串拼接的问题 在线等 急!
你用过滤器拦截,是因为session中没有USER,你跳转以后还是没有USER,然后不就死循环了吗那是必然的啊
你可以用权限,但是似乎更麻烦,
为什么你要等5秒后去登录呢??如果我是用户等5秒在那响应,我就会关掉你的网站
比如判断请求的url的后缀名包括主页就不过滤
private FilterConfig filterConfig;
private String loginPage = "Login.jsp";
public void destroy() {
filterConfig = null;
System.gc();
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
HttpSession session = req.getSession(true);
if(session.getAttribute("user") != null ){
chain.doFilter(request, response);
return;
}
else{
ServletContext ctx = filterConfig.getServletContext();
setForwordURI(req);
ctx.getRequestDispatcher(loginPage).forward(req, res);
}
} public void init(FilterConfig config) throws ServletException {
filterConfig = config;
if(filterConfig.getInitParameter("loginPage") != null)
loginPage = filterConfig.getInitParameter("loginPage");
}
private void setForwordURI(HttpServletRequest request){
StringBuffer requestURI = new StringBuffer(request.getRequestURI());
String queryString = request.getQueryString();
if(queryString != null){
requestURI.append("?").append(queryString);
}
request.setAttribute("orignURL", requestURI.toString());
}}
<filter-name>MyFilter</filter-name>
<filter-class>com.zhang.util.FilterAll</filter-class>
<init-param>
<param-name>loginPage</param-name>
<param-value>/Login.jsp</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>