正在回答
10回答
同学你好,非常感谢同学的反馈。
我这里也已经反馈到平台相关部门呢~
同学下次可以使用“意见反馈”直接说明关于平台的问题哦~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
吃吃吃鱼的猫
2019-06-05 17:31:02
同学你好,可以参考如下思路进行编写:
1、在留言板页面点击登录时,使用超链接跳转至登录页面,可以参考如下代码:
2、在登录页面点击提交按钮时,提交至名为Login的Servlet中处理登录请求。
如果存在此用户,放入session,转发至首页。
不存在此用户时,转发至登录页面。可以参考如下代码:
3、额外添加拦截器,判断是否登录。
当没有登录时,直接重定向至登录页面。当登录后,再转发请求。需要使用return;
原因如下:过滤器执行完chain.dofilter(req,resp)后,放行到你所指向的servlet或jsp,执行完servlet或者jsp后,可能会重新回到过滤器执行完剩余代码,要是你在剩余代码中又有请求发出,程序就会发生发出多次请求错误。所以,建议加上return。
可以参考如下代码:
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
MasonM
2019-06-05 12:53:52
我把拦截器改成这个
package com.mason.web.filter; import com.mason.domain.User; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @WebFilter(urlPatterns = "/jsp/*",filterName = "/UserFilter") public class UserFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; User loginUser = (User) request.getSession().getAttribute("loginUser"); System.out.println(loginUser); if (loginUser == null) { request.setAttribute("msg", "你还没登录,请先登录!"); request.getRequestDispatcher("/login.jsp").forward(request,resp); return; } chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException { } }
我在登录成功的时候,把用户信息封装成一个User对象存入Session中,
然后在拦截器中判断是否为空
然后拦截成功之后
登录页面显示异常
↓
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星