在testfilter.jsp里
<form name="f1" method="post" action="FilterServlet">
<input type="text" name="user_id">
<input type="submit" name="submit" value="确定" >
</form>在FilterServlet里
String user_id=request.getParameter("user_id");
HttpSession session=request.getSession();
session.setAttribute("USER_ID",user_id);
request.getRequestDispatcher("testfilter2.jsp").forward(request, response);在TestFilter里
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);
String user_id="";
if(session.getAttribute("USER_ID")!=null)
{
user_id=(String)session.getAttribute("USER_ID");
}
if(user_id.equals("") || user_id==null)
{
req.getRequestDispatcher("lottery.jsp").forward(req, res);
chain.doFilter(request,response);
}
else
{
chain.doFilter(request,response);
}
}在web.xml里
<filter>
<filter-name>loginz</filter-name>
<filter-class>test.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginz</filter-name>
<url-pattern>/testfilter2.jsp</url-pattern>
</filter-mapping>但运行的时候无论我有没有输入数据,TestFilter都没有执行,调试了很久都找不到问题所在,请教一下高手。
<form name="f1" method="post" action="FilterServlet">
<input type="text" name="user_id">
<input type="submit" name="submit" value="确定" >
</form>在FilterServlet里
String user_id=request.getParameter("user_id");
HttpSession session=request.getSession();
session.setAttribute("USER_ID",user_id);
request.getRequestDispatcher("testfilter2.jsp").forward(request, response);在TestFilter里
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);
String user_id="";
if(session.getAttribute("USER_ID")!=null)
{
user_id=(String)session.getAttribute("USER_ID");
}
if(user_id.equals("") || user_id==null)
{
req.getRequestDispatcher("lottery.jsp").forward(req, res);
chain.doFilter(request,response);
}
else
{
chain.doFilter(request,response);
}
}在web.xml里
<filter>
<filter-name>loginz</filter-name>
<filter-class>test.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginz</filter-name>
<url-pattern>/testfilter2.jsp</url-pattern>
</filter-mapping>但运行的时候无论我有没有输入数据,TestFilter都没有执行,调试了很久都找不到问题所在,请教一下高手。
<filter>
<filter-name>loginz</filter-name>
<filter-class>test.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginz</filter-name>
<url-pattern>/FilterServlet</url-pattern> //修改这里
</filter-mapping>
FilterServlet的req.getRequestDispatcher("lottery.jsp").forward(req, res);
指向是否正确。
这个转向是当session为空时,转去的页面,没有错的
{
user_id=(String)session.getAttribute("USER_ID");
}
if(user_id.equals("") || user_id==null)
{
req.getRequestDispatcher("lottery.jsp").forward(req, res);
chain.doFilter(request,response);
}
else
{
chain.doFilter(request,response);
}
}
你这样写没什么意义啊.
我这个是判断session是否为空,不知道这样写是否正确
if(user_id.equals("") || user_id==null)
{
req.getRequestDispatcher("lottery.jsp").forward(req, res);
return;
}
chain.doFilter(request,response);
}else{
req.getRequestDispatcher("lottery.jsp").forward(req, res);
return;}这样看看
if(use_id==null || use_id.equal(" ")) 比较空格.
{
req.getRequestDispatcher("lottery.jsp").forward(req, res);
}
else
{
chain.doFilter(request,response);
}
chain.doFilter(request,response);
这样试一下!
程序都没经过TestFilter
你写对了没?是不是不全啊?
现在奇怪的是,如果我把<url-pattern>/testfilter2.jsp</url-pattern>
改成<url-pattern>/testfilter.jsp</url-pattern> 的时候TestFilter就起作用,
在第一次打开testfilter.jsp的时候TestFilter就判断session是否为空,然后跳转到指定的页面。
你是主怎样访问/testfilter2.jsp的?
这样看看
request.getRequestDispatcher("testfilter2.jsp").forward(request, response);
但程序运行的时候并没有过filter
这样看看
request.sendRedirect(request.getContextPath() + "testfilter2.jsp");