我已经写好了一个过滤器(老师写的),目的是为了防止跳过登录操作,直接输入某个具体的地址,直接打开相应的页面。XML文件也部署好了,请问还需要在JSP页面上写上调用过滤器的什么代码之类的吗?如果写的话怎么写呢?因为我不知道,照着做了也没有实现这个过滤器的功能(就是说没登陆就直接输入地址也能进入到相应的页面,所以没实现)。请大家帮我看看过滤器JAVA文件:
//AdminEnterCheck.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AdminEnterCheck implements Filter
{
private FilterConfig fc=null;
public void init(FilterConfig fc) throws ServletException
{
this.fc=fc;
}
public void doFilter (ServletRequest servletrequest,ServletResponse servletresponse,FilterChain chain) throws IOException,ServletException
{
if (fc==null)
{
return;
}
HttpServletRequest request=(HttpServletRequest)servletrequest;
HttpServletResponse response=(HttpServletResponse)servletresponse;
HttpSession session=request.getSession();
String username=(String)session.getAttribute("username");
if (username==null || username.equals(""))
{
response.sendRedirect("../index.jsp");
}else
{
chain.doFilter(servletrequest,servletresponse);
}
}
public void destroy()
{
fc=null;
}
}web.xml文件如下:
<web-app><filter>
<filter-name>abc</filter-name>
<filter-class>AdminEnterCheck</filter-class>
</filter><filter-mapping>
<filter-name>abc</filter-name>
<url-pattern>/Myex12/*url-pattern>
</filter-mapping></web-app>
//AdminEnterCheck.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AdminEnterCheck implements Filter
{
private FilterConfig fc=null;
public void init(FilterConfig fc) throws ServletException
{
this.fc=fc;
}
public void doFilter (ServletRequest servletrequest,ServletResponse servletresponse,FilterChain chain) throws IOException,ServletException
{
if (fc==null)
{
return;
}
HttpServletRequest request=(HttpServletRequest)servletrequest;
HttpServletResponse response=(HttpServletResponse)servletresponse;
HttpSession session=request.getSession();
String username=(String)session.getAttribute("username");
if (username==null || username.equals(""))
{
response.sendRedirect("../index.jsp");
}else
{
chain.doFilter(servletrequest,servletresponse);
}
}
public void destroy()
{
fc=null;
}
}web.xml文件如下:
<web-app><filter>
<filter-name>abc</filter-name>
<filter-class>AdminEnterCheck</filter-class>
</filter><filter-mapping>
<filter-name>abc</filter-name>
<url-pattern>/Myex12/*url-pattern>
</filter-mapping></web-app>
解决方案 »
- 救命!Directory Listing For是什么问题?
- hibernate 插入乱码问题
- 在手机上有什么好的方法计算在线人数或者确认用户是否离线
- 哪位有用过bugzilla测试工具???在线等~~~麻烦了哦
- [求助]使用javamail下载邮件附件,附件打不开的问题,请大虾指教
- 一个很奇怪的问题,为什么null!=null会是true??
- Struts配置和路径问题
- 能不能在局域网的其他机器上(有充分权限)写文本文件?
- 请问:在web-inf目录下有calsses/com/dichain/application/base/BasicConstants.class但还是出错,为什么??
- mysql通用的分页查询的存储过程的问题
- 火车票售票系统???
- 将子窗体中的数据传回父窗体
只有你的请求为/Myex12/XX.jsp才被这个拦截器拦截的
把你的xx.jsp文件放在Myex12(webroot下面的一个建一个文件夹)下面试试
路径写正确没
你写一个最简单的过滤器试试,import java.io.IOExceppublic class AdminFilter 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;
HttpSession session=request.getSession();
Object m=session.getAttribute("member");
if(null==m){
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else{
arg2.doFilter(arg0, arg1) ;
}
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}
需要进得过滤一下!不然的话没有登陆的也可以进了!
<filter-mapping>
<filter-name>abc </filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>
你这样写看可以不,配置时url一定要正确
import javax.servlet.*;
import javax.servlet.http.*;public class AdminFilter implements Filter { public void destroy() {
} public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
HttpSession session=request.getSession();
Object m=session.getAttribute("username");
if(null==m){
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else{
arg2.doFilter(arg0, arg1) ;
}
} public void init(FilterConfig arg0) throws ServletException {
}}编译通过了!可是试了,还是没有达到过滤器的效果!
"/Myex12/*",当然过滤不了了,应该为"/*",或有文件夹,就写文件夹的名,具体过滤映射好像
有三种用法,你可以上网搜搜。