过滤器到底该如何设置?

hyowner 2010-01-14 12:37:29
现在设置一个过滤器,要求就是必须先经过登陆页面输入正确的用户名和密码以后才能进入下一个页面里,我用的是tomcat,还有就是如果直接在地址栏中输入http://localhost:8080/phone/listmessage.jsp这样的地址的话是打不开页面的,必须先经过login.jsp登陆页登陆到下一页 就这样的要求 需要写什么代码和在web.xml配置些什么呢????
...全文
185 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_go 2010-01-14
  • 打赏
  • 举报
回复
我给你个filter的代码 你看看 也许有帮助:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpresp = (HttpServletResponse) response;

int n1 = httpreq.getServletPath().indexOf("login.jsp");
int n2 = httpreq.getServletPath().indexOf("/servlet/Login");
if (n1 != -1 || n2 != -1)
chain.doFilter(request, response);
else
{
HttpSession session = httpreq.getSession();
String username = (String) session.getAttribute("username");
if (username == null) httpresp.sendRedirect("/filter/login.jsp");
else chain.doFilter(request, response);
}
}
hyowner 2010-01-14
  • 打赏
  • 举报
回复
顶起!!!在线等待
shadow55 2010-01-14
  • 打赏
  • 举报
回复
把你需要登录才能访问的jsp放到一个文件夹,过滤器写过滤这个文件夹的所有访问就好了
iso_wangjian 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 it_go 的回复:]
我给你个filter的代码 你看看 也许有帮助:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpresp = (HttpServletResponse) response;

int n1 = httpreq.getServletPath().indexOf("login.jsp");
int n2 = httpreq.getServletPath().indexOf("/servlet/Login");
if (n1 != -1 || n2 != -1)     
chain.doFilter(request, response);
else
{
HttpSession session = httpreq.getSession();
String username = (String) session.getAttribute("username");
if (username == null) httpresp.sendRedirect("/filter/login.jsp");
else  chain.doFilter(request, response);
}
}

[/Quote]
int n2 = httpreq.getServletPath().indexOf("/servlet/Login");为什么有N2?代表上面意思?
hyowner 2010-01-14
  • 打赏
  • 举报
回复
错是没错了 就是我进入我的login.jsp就是白板显示 什么都没了
ChDw 2010-01-14
  • 打赏
  • 举报
回复
你先断点跟踪一下,看看是不是进入你的 Filter了。如果没有进入就表示你配置有错啊
hyowner 2010-01-14
  • 打赏
  • 举报
回复
还有人会吗?
hyowner 2010-01-14
  • 打赏
  • 举报
回复
没错了 可是还是不行 没过滤掉我的JSP
hyowner 2010-01-14
  • 打赏
  • 举报
回复
description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP:


An error occurred at line: 6 in the generated java file
Only a type can be imported. javax.jms.Session resolves to a package

Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:435)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
filter.LoginFilter.doFilter(LoginFilter.java:41)
filter.EncodeFilter.doFilter(EncodeFilter.java:24)


按你说的 一打开我的login.jsp就报这样的错了...
IT_go 2010-01-14
  • 打赏
  • 举报
回复
是博客里加你好友了 我也是新手 我们这网络限制 上不了QQ 不过我会留你QQ号
hyowner 2010-01-14
  • 打赏
  • 举报
回复
加我QQ好吗??QQ是57191841
IT_go 2010-01-14
  • 打赏
  • 举报
回复
我加你好友了 我们可以有时间在交流
sgl1984 2010-01-14
  • 打赏
  • 举报
回复
<filter>
<filter-name>PrivilegeFilter</filter-name><!-过滤器的名称,你自己取->
<filter-class>com.util.PrivilegeFilter</filter-class><!-对应的类->
</filter>
<filter-mapping>
<filter-name>PrivilegeFilter</filter-name><!--与上面的名称对应->
<url-pattern>/manager/*</url-pattern><!-你要未被发现滤的页面的路径->
</filter-mapping>
IT_go 2010-01-14
  • 打赏
  • 举报
回复
web设置:<filter>
<filter-name>StyleFilter</filter-name>
<filter-class>controller.StyleFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>StyleFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 记得最好filter-mapping放在所有的servlet后面;
int n2 = httpreq.getServletPath().indexOf("/servlet/Login"); 这个主要就是设置排除路径用的 如果是login.jsp 或者servlet/login的话 就直接进入 否则的话就跳到登录的页面
hyowner 2010-01-14
  • 打赏
  • 举报
回复
web.xml里怎么设置的呢?希望能告诉下哦 谢谢了
IT_go 2010-01-14
  • 打赏
  • 举报
回复
或者这样的:(只是if条件不一样 你看看哪个你更能了解)
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
String path = request.getServletPath();
int url1 = path.indexOf("/login.jsp");
int url2 = path.indexOf("/LoginJudge");

if(url1 == -1 && url2 == -1){
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
if(user == null){
request.setAttribute("msg", "对不起,你还没有登录....");
request.getRequestDispatcher("/login.jsp").forward(request, res);
return;
}


}
chain.doFilter(request, res);
}
hyowner 2010-01-14
  • 打赏
  • 举报
回复
int n2 = httpreq.getServletPath().indexOf("/servlet/Login"); 什么意思呢额?

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧