关于作业的拦截功能

关于作业的拦截功能

拦截普通管理员 操作用户管理那个功能,我完全没有思考如何拦截 然后我只会拦截URL

<filter>
    <filter-name>UserFilter</filter-name>
    <filter-class>com.imooc.course.filter.UserFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UserFilter</filter-name>
    <url-pattern>/addUser.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>UserFilter</filter-name>
    <url-pattern>/SelectUsers</url-pattern>
</filter-mapping>
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        if (!(req.getSession().getAttribute("code").equals(req.getParameter("checkCode")))){
            req.getRequestDispatcher("/index.jsp").forward(req,resp);
        }
        String username = (String) req.getParameter("username");
        String password = (String) req.getParameter("password");
        req.getSession().setAttribute("username",username);

        CourseService courseService=new CourseServiceImpl();
        int i=courseService.login(username,password);
        switch (i){
            case 1://超级管理员
                req.getRequestDispatcher("/server.jsp?i="+i).forward(req,resp);
                break;
            case 2://普通管理员
                req.getRequestDispatcher("/server.jsp?i="+i).forward(req,resp);
                break;
            case 0://登陆不成功,跳转到登陆页面
                req.getRequestDispatcher("/index.jsp").forward(req,resp);
                break;
        }
    }
}
public class UserFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;
        HttpServletResponse httpServletResponse= (HttpServletResponse) servletResponse;

        System.out.println("doFilter");
        int i= (int) httpServletRequest.getAttribute("i");
        System.out.println("i="+i);
        if(i!=1){
            System.out.println("doFilter   if(i!=1)");
            httpServletResponse.sendRedirect("/server.jsp?i="+i);
            return;
        }
        filterChain.doFilter(servletRequest,servletResponse);
        return;
    }

    @Override
    public void destroy() {

    }
}

然后我点击查询和添加管理员的时候 就给我报空指针异常了  可否给我讲解下思路怎么拦截什么的

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

哦,权限的话可以这么做。在初始化数据的时候,除了用户名和密码外,再加上一个flag字段,如果为0就表示超级管理员,如果为1就表示普通管理员。

在登录的Servlet中取到flag的值,然后把flag存储到session中

然后在left.jsp中,使用jistl标签或java脚本进行判断,如果flag为0,即表示超级管理员,那么就显示用户管理相关的代码,否则就不显示。也就是在用户管理的div外面写个if语句

祝学习愉快!

  • 音殿 提问者 #1
    非常感谢!
    2018-05-10 21:59:03
好帮手慕珊 2018-05-08 10:42:28

这个可以使用过滤器来实现,过滤server.jsp,当登录成功时可以往下执行,否则就转到登录页面。

可以参考过滤器课程的登录权限验证功能。

祝学习愉快!

  • 提问者 音殿 #1
    不是过滤登录状态呀 过滤是否能操作管理员界面的权限呀 em....
    2018-05-08 10:50:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

Java Web基础入门2018版
  • 参与学习       716    人
  • 提交作业       185    份
  • 解答问题       1363    个

会Java?懂前端基础?想学后台开发?那么,赶快来学习《Java Web入门》路径吧。本路径主要介绍Java Web的基础知识,并配有大量案例,定会让你收获多多!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师