关于作业的拦截功能
拦截普通管理员 操作用户管理那个功能,我完全没有思考如何拦截 然后我只会拦截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() {
}
}然后我点击查询和添加管理员的时候 就给我报空指针异常了 可否给我讲解下思路怎么拦截什么的
19
收起
正在回答
2回答
哦,权限的话可以这么做。在初始化数据的时候,除了用户名和密码外,再加上一个flag字段,如果为0就表示超级管理员,如果为1就表示普通管理员。
在登录的Servlet中取到flag的值,然后把flag存储到session中
然后在left.jsp中,使用jistl标签或java脚本进行判断,如果flag为0,即表示超级管理员,那么就显示用户管理相关的代码,否则就不显示。也就是在用户管理的div外面写个if语句
祝学习愉快!
Java Web基础入门2018版
- 参与学习 716 人
- 提交作业 185 份
- 解答问题 1363 个
会Java?懂前端基础?想学后台开发?那么,赶快来学习《Java Web入门》路径吧。本路径主要介绍Java Web的基础知识,并配有大量案例,定会让你收获多多!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星