如何实现
l 使用过滤器限制不登录不能进入管理页面
l 使用监听器进行数据初始化,在xml中存储用户信息,编写XmlDataSource类将数据从xml中读取出来,然后将List存放到ServletContext中,登录时判断用户名和密码在List的用户信息中是否存在,如果存在就登录成功,否则登录失败
这简单的逻辑写好也不太容易,,,,整个项目都在多次注重初始化,
怎么更好地把握全局脉络?
14
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小脸
2021-04-20 16:37:44
同学你好,
1、这里需要创建两个过滤器
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// 判断是否能通过
boolean flag = false;
String reqURI = req.getRequestURI();
// 不需要过滤的url
String[] url = { ".js", ".css", ".html", ".png", "login" };
for (String str : url) {
// 判断uri是否需要过滤
if (reqURI.indexOf(str) != -1) {
flag = true;
break;
}
}
// 如果为flag为false,则判断是否登录,如果登录,则放行,没登录则跳转到登录页面
if (!flag) {
User user = (User) req.getSession().getAttribute("user");
if (user != null) {
// 如果user为null,则直接调用getUserName()方法,会出现空指针异常,所以建议在if判断中进行输出
System.out.println("====== authfilter过滤user结果username=" + user.getUserName());
chain.doFilter(request, response);
return;
} else {
res.sendRedirect(request.getServletContext() + "/login.jsp");
}
}
chain.doFilter(request, response);
}
2)中文乱码过滤器,可以通过response.setContentType()设置响应的内容类型及编码。参考代码如下:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
2、 监听器中,从xml中读取到用户信息存入List集合中,并将list集合放入ServletContext中。在controller中,从ServletContext中获取到存放用户信息的list集合。在controller中获取前台提交的用户,封装成User对象,和获取list集合作为参数一起传入service中的login()方法。然后在service的login()方法中,循环遍历集合,判断user对象在list集合中存在。如果存在则可以将用户信息添加到session中。
祝学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星