2 qq 29309057 qq_29309057 于 2015.07.28 10:16 提问

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 {

 }

}

3个回答

suzunshou
suzunshou   2015.07.28 14:37
已采纳

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

qq_29309057
qq_29309057 xiexie
接近 3 年之前 回复
CSDNXIAON
CSDNXIAON   2015.07.28 10:28

java web中配置Filter解决jsp中文乱码问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

yuke198907
yuke198907   2015.07.28 13:06

路径要写对,你试试../hehe/show.jsp呢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Filter过滤器实现权限控制
在操作中经常性的要对用户是否登陆进行验证,那么如果要进行验证的话,则肯定有大量的代码要不断的判断session是否存在。那么此种代码实际上就可以直接放在过滤器中进行编写。 登录页面:Login.jsp //检查是否输入用户名 否则不予提交 function check(){ var username = document.getElementById("us
java web中配置Filter解决jsp中文乱码问题
具体的做法:    建立一个实现 Filter 接口的类。这个类需要三个方法,分别是: doFilter 、 init 和 destroy 。 doFilter 方法包含主要的过滤代码, init 方法建立设置操作,而 destroy 方法进行清除。    比如我建立的是 FilterChar.java    package com.gtxy.dynaAc
常见jsp出现的页面错误(404,500等)与捕捉办法
200 ->请求已完成 记得在ajax中的status状态值也是用200来判断发送的请求是否完成 400 ->400 错误请求,原因可能是请求中存在异常字符或者是请求语法有错误等等引起 404 ->大名鼎鼎,找不到指定资源或者文件等, 想servlet的mapping配置错误 或者像struts的action配置错误都有可能引起该错误 414 ->请求URI太长,顾名思义.而以get方法的u
调试web程序时,遇到服务器500错误,怎么办?
对于web开发者,当程序发到外网(或预发布)情况下,服务器默认设置是不会报错的(错误详情报不出来),此时,若遇到一个请求,报服务器500错误,怎么排查原因呢?我曾经是代码一行一行追踪,先echo 然后die,定位错误原因。今天发现一个办法: 看下apache log文件(若没root权限可找运维帮忙)。log文件位置:/var/log/apache2/error.log,log文件大致内容如
jsp——500错误
问题:昨天写的jsp界面遇到这样一个问题,每次访问都出现500错误, 调试了好久都没发现代码有什么问题,感到很绝望,错误信息如下: 代码如下: <% ArrayList<JSONObject> list = (ArrayList<JSONObject>)request.getAttribute("newsList"); for(JSONObject j:
利用filter()过滤器进行访问权限控制
第一步:配置web.xml文件,确定要过滤的servlet第二步:在doFilter()方法中进行逻辑操作
启动jetty后,访问jsp页面报500错: JSP support not configured
问题:启动jetty后,访问jsp页面,出现一下错误:         HTTP ERROR: 500 JSP support not configured RequestURI=/capaa/WEB-INF/jsp/error/500.jsp Powered by Jetty:// 原因:是应为没有加载jetty用来解释jsp的jar包。加载进来就可以了。
JavaWEB采用Filter的权限管理
1.权限查看及管理界面代码:   权限查看及管理              ${param.username}的权限是: ${auth.displayName} ${auth.displayName}     2.用户的pojo--User.java: public class User
遇到HTTP Status 500 问题
HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented
Filter(过滤器)常见应用(三)——权限管理系统(三)
上一篇文章Filter(过滤器)常见应用(三)——权限管理系统(二)已经开发好了web层的一大部分,做的所有这些工作都是为了这一步——权限实现,是时候使用Filter实现URL级别的权限认证了。权限管理系统的设计和分析开发web层权限实现现在我们来编写一个过滤器来实现URL级别的权限认证,要在cn.itcast.web.filter包下创建一个Filter——SecurityFilter.java。