java之struts2之ServletAPI
在之前的学习中struts2已经可以处理大部分问题了。但是如果要将用户登录数据存入session中,可以有两种方式开存入ServletAPI。
一种解耦合方式,一种耦合方式。
1. 解耦合方式
解耦合方式---ActionContext : 解耦合方式获取的都是map对象
1 //登录 2 public String login(){ 3 if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){ 4 //登录成功 数据存入Session中 5 //通过ActionContext可以获得Session 6 Map<String,Object> session = ActionContext.getContext().getSession(); 7 session.put("currentUser", user); 8 /** 9 * 通过解耦合的方式还可以获取request,application 10 */ 11 Map<String,Object> request = (Map<String, Object>) ActionContext.getContext().get("request"); 12 Map<String,Object> application = ActionContext.getContext().getApplication(); 13 return Action.SUCCESS; 14 } 15 return Action.LOGIN; 16 }
好处:方便测试,没有侵入性,ActionContext可以不在Servlet容器环境中使用
2.耦合方式获取ServletAPI
下面讲的是耦合方式获取的Servlet对象
2.1 通过ActionContext获取
//登录 public String login(){ if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){ //登录成功 数据存入Session中 /** * 通过ActionContext对象获取HttpServletRequest对象 */ HttpServletRequest req = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST); HttpSession session = req.getSession(); session.setAttribute("currentUser", user); /** * 在ActionContext中还可以获取HttpServletResponse对象 * 和ServletContext对象 */ HttpServletResponse resp = (HttpServletResponse)ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE); ServletContext sc =(ServletContext)ActionContext.getContext().get(StrutsStatics.SERVLET_CONTEXT); return Action.SUCCESS; } return Action.LOGIN; }
2.2 通过ServletActionContext获取
//登录 public String login(){ if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){ //登录成功 数据存入Session中 //通过ServletActionContext以耦合方式获取ServletAPI对象 HttpServletRequest req = ServletActionContext.getRequest(); HttpSession session = req.getSession(); session.setAttribute("currentUser", user); /** * 通过ServletActionContext工具类还可以获取到其他的ServletAPI对象 */ HttpServletResponse resp = ServletActionContext.getResponse(); ServletContext sc = ServletActionContext.getServletContext(); return Action.SUCCESS; } return Action.LOGIN; }
2.3 通过实现接口的方式来获取
public class UserAction4 implements ServletRequestAware{ private User user; private HttpServletRequest req; @Override public void setServletRequest(HttpServletRequest request) { this.req = request; } //登录 public String login(){ if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){ //登录成功 数据存入Session中 //通过ServletActionContext以耦合方式获取ServletAPI对象 HttpSession session = this.req.getSession(); session.setAttribute("currentUser", user); return Action.SUCCESS; } return Action.LOGIN; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
分类:
java框架学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现