_huang_ 2015-07-28 02:16 采纳率: 50%
浏览 1770
已采纳

web jsp filter 权限控制 运行测试出现500问题 怎么解决

工程结构
图片说明

index.jsp为登陆页面,UserServlet.java为针对登陆的servlet,登陆成功或失败都会跳转到show.jsp,但是有Userfilter.java的过滤。一旦登陆失败会让页面转到error.jsp。

正常是流程:进入index.jsp输入账号密码,登陆成功后进入show.jsp(测试过没问题)
错误的用例:通过控制url绕过index.jsp直接进入show.jsp(出现500错误,应该要进入error.jsp的)

如图
图片说明

XML配置文件
图片说明

index.jsp



用户登陆
用户名:

密码:



UserServlet.java
public class UserServlet extends HttpServlet
{

public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException
{
     String name=req.getParameter("username");
     String password=req.getParameter("password");
     UserInfo info= new UserInfo();

         if(password.equals("123456"))
         {
             info.setName(name);
             info.setPassword(password);
             req.getSession().setAttribute("name", name);
             req.getSession().setAttribute("userinfo", info);
             System.out.println("登陆成功");
             RequestDispatcher rd=req.getRequestDispatcher("/hehe/show.jsp");
             rd.forward(req, resp);
         }
         else
         {
             System.out.println("登录失败");
             RequestDispatcher rd=req.getRequestDispatcher("/hehe/show.jsp");
             rd.forward(req, resp);
         }  
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException
{
        doGet(request,response);
}

}

UserFilter.java
public class UserFilter implements Filter{
//销毁方法
public void destroy() {

 }
 //完成过滤操作
 public void doFilter(ServletRequest request, ServletResponse response,FilterChain filter) throws IOException, ServletException 
 {
  UserInfo info=(UserInfo)((HttpServletRequest) request).getSession().getAttribute("userinfo");

  String name=((HttpServletRequest) request).getSession().getAttribute("name").toString();
  System.out.println("filter 2:"+name);

  if(info!=null)
  //if(name!=null)
  {
   filter.doFilter(request, response);
  }
  else
  {
   response.setContentType("text/html;charset=utf-8");
   ((HttpServletResponse) response).sendRedirect("../error.jsp");
  }

 }
 //初始化
 public void init(FilterConfig arg0) throws ServletException {

 }

}

  • 写回答

2条回答 默认 最新

  • 苏遵守 2015-07-28 06:37
    关注

    直接访问show.jsp的话 session为空啊,当然不行,你还要判断session是否为空,然后再处理跳转,可以写在过滤器里面, 也可以写在show.jsp里面

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 flask项目,怎么使用AJAX传数据库数据到echarts图表的data里,实现异步加载数据。
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题