2018-06-25(编写权限校验过滤器)

权限校验过滤器:

对应的servlet文件(login.jsp)中的doPost()方法中添加:

String returnUri=request.getParameter("return_uri");//return_uri是用户访问对应的页面之前会访问的页面,通过这个值可以返回对应页面。

在登录成功(在登录功能下)的判断语句下添加:

request.getSession.setAttribute("flag","_success");//如果登录成功,在当前对象中保存一个名称为flag的变量的值为_success

if(returnUri!=null){

rd=request.getRequestDispatcher(returnUri);//RequestDispatcher rd=null;

rd.forward(request,response);

}else{

rd=request.getRequestDispatcher("/index.jsp");

rd.forward(request,response);

}

在登录失败的判断语句下添加:

request.getSession.setAttribute("flag","_error");

reuqest.setAttribute("msg","用户名或密码错误");

rd=request.getRequestDispatcher("login.jsp");

rd.forward(request,response);


-》在对应的jsp文件中添加隐藏域:

<%if(request.getAttribute("return_uri")!=null){%>

<input type="hidden" name="return-uri" value="<%=request.getAttribute("return_uri")%>" />

<%}%>


-》新建过滤器 -》 编写doFilter()方法中的业务逻辑:

HttpServletRequset req=(HttpServletRequest)request;

HttpServletResponse resp=(HttpServletResponse)response;

String sp=req.getServletPath();

HttpSession session=req.getSession();

String flag=(String)session.getAttribute("flag");

if(sp!=null&&(sp.equals.("/login.jsp")||sp.equals.("/index.jsp"))){//如果访问的是默认页面或登录界面(即一些不需经过权限授予即可以访问的页面),就直接将请求转发给下一个组件处理

chain.doFilter(request,response);

}else{

if(flag!=null&&flag,equals("_success")){

chain.doFilter(request,response);

}else if(flag!=null&&flag,equals("_error")){

req.setAttribute("msg","登录失败,请重新登录<br/>");

req.setAttribute("return_uri",sp);

RequestDispatcher  rd=request.getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}else{

req.setAttribute("msg","您尚未登录,请登录<br/>");

req.setAttribute("return_uri",sp);

RequestDispatcher  rd=request.getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}

}


-》接下来在web.xml配置一下(将编写的过滤器等配置好):

<filter>

<filter-name>PermissionFilter</filter-name>

<filter-class>hp.filter.PermissionFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>PermissionFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文包括:1、Filter简介2、Filter是如何实现拦截的?3、Filter开发入门4、Filter的生命周期...
    廖少少阅读 7,548评论 3 56
  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    91数据阅读 3,667评论 0 13
  • Web应用程序 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。Inte...
    陈先森mansplain阅读 2,444评论 1 4
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 1,103评论 0 0
  • 字如其人,在很多时候,字就是自己的另外一张名片。我们都希望自己有一手好字,但也都觉得自己已经这么大岁数了,再练字也...
    筝小钱阅读 4,631评论 2 49

友情链接更多精彩内容