首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

使用servlet过滤器后相对地址出有关问题了

2012-01-24 
使用servlet过滤器后相对地址出问题了为了系统安全性考虑。没登陆用户不能请求除登陆界面和处理登陆的Actio

使用servlet过滤器后相对地址出问题了
为了系统安全性考虑。没登陆用户不能请求除登陆界面和处理登陆的Action之外的界面。
现在功能实现了。但是登陆解面的图片,样式了都不能用了。有人碰到过这种问题吗?
代码用的http://dev.yesky.com/329/2015829.shtml这个页面陈雄华的代码。修改成自己的代码是这样的。
public   void   doFilter(ServletRequest   request,   ServletResponse   response
8.        ,   FilterChain   filterChain)
9.    {
10.    try
11.    {
12.     //进行请求和响应的类型转换
13.     HttpServletRequest   httpRequest   =   (HttpServletRequest)   request;
14.     HttpServletResponse   httpResponse   =   (HttpServletResponse)   response;
15.  
16.     boolean   isValid   =   true;
17.     String   uriStr   =   httpRequest.getRequestURI().toUpperCase();
18.     if   (uriStr.indexOf( "INDEX.JSP ")   ==   -1   &&
19.       uriStr.indexOf( "INDEX.DO ")   ==   -1   &&
20.       httpRequest.getSession().getAttribute( "userid ")   ==   null)
21.     {
22.      isValid   =   false;
23.     }
24.     if   (isValid)
25.     {
26.      filterChain.doFilter(request,   response);
27.     }   else
28.     {
29.      httpResponse.sendRedirect( "/webModule/index.jsp ");
30.     }
31.  
32.    }   catch   (ServletException   sx)
33.    {
34.     filterConfig.getServletContext().log(sx.getMessage());
35.    }   catch   (IOException   iox)
36.    {
37.     filterConfig.getServletContext().log(iox.getMessage());
38.    }


代码清单     过滤器的部署描述配置信息

1.   <web-app>
2.    <display-name>webModule</display-name>
3.    <filter>
4.     <filter-name>logincheckfilter</filter-name>
5.     <filter-class>bookstore.servlet.LoginCheckFilter</filter-class>
6.    </filter>
7.    <filter-mapping>
8.     <filter-name>logincheckfilter</filter-name>
9.     <url-pattern>/*</url-pattern>
10.    </filter-mapping>
11.    …
12.   </web-app>  


还添一点问题描述。功能可用。登陆后再回到主页就一切问题都没了。就首次登的时候有问题。
我添了 <html:base/>
或者 <%path=...%> 那一长串代码
<base   herf= <%=path%> > 也无效

[解决办法]
package com.zlt.filter;

import java.io.IOException;
import java.io.PrintWriter;

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 LoginFilter implements Filter {

public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
if( request.getRequestURI().indexOf( "manager ") > 0 ) //我的jsp一个文件夹
{
if(request.getSession().getAttribute( "name ")==null)
{
//response.setContentType( "text/html;charset=gbk ");
//PrintWriter out = response.getWriter();
//out.write( "\r\n ");


//out.write( "\t\t <script language=\ "javascript\ "> \r\n ");
//resquest.getRequestDispatcher( "/nologin.jsp ").forward(arg0, arg1);
//out.write( " \t\t alert(\ "您尚未登陆,请先登陆\ ");\r\n ");
//System.out.println(resquest.getSession().getServletContext().getRealPath( "/login.jsp "));
//out.write( " \t\t window.top.location= ' "+resquest.getSession().getServletContext().getResourcePaths( "/login.jsp ")+ " ';\r\n ");
//out.write( " \t\t\t </script> \r\n ");
//out.write( "\t\t\r\n ");
//out.write( "\r\n ");
response.sendRedirect(request.getContextPath()+ "/nologin.jsp ");
//out.flush();
//out.close();
}else
{
arg2.doFilter(arg0, arg1);
}
}
else if( request.getRequestURI().indexOf( ".do ") > 0 && !(request.getRequestURI().indexOf( "login.do ")> =0)&&!(request.getRequestURI().indexOf( "getLabelValue.do ")> =0))
{
if(request.getSession().getAttribute( "name ")==null)
{
//response.setContentType( "text/html;charset=gbk ");
//PrintWriter out = response.getWriter();
//out.write( "\r\n ");
//out.write( "\t\t <script language=\ "javascript\ "> \r\n ");
//out.write( " \t\t alert(\ "您尚未登陆,请先登陆\ ");\r\n ");
////out.write( " \t\t window.top.location= ' "+resquest.getSession().getServletContext().getResourcePaths( "/login.jsp ")+ " ';\r\n ");
//out.write( " \t\t\t </script> \r\n ");
//out.write( "\t\t\r\n ");
//out.write( "\r\n ");
//out.flush();
//out.close();
response.sendRedirect(request.getContextPath()+ "/nologin.jsp ");
//resquest.getRequestDispatcher( "/nologin.jsp ").forward(arg0, arg1);
}else
{
arg2.doFilter(arg0, arg1);
}
}else
{
arg2.doFilter(arg0, arg1);
}

}

public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

}


这是我现在用的一模一样的代码

热点排行