struts2学习笔记之六:struts2的Action访问ServletAPI的几种方式

时间:2021-05-28 17:20:20
方法一:通过ActionContext访问SerlvetAPI,这种方式没有侵入性
Action类部分代码
import com.opensymphony.xwork2.ActionContext;

    public String execute() throws Exception {
if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
//获取Map方式的request
//ActionContext.getContext().put("msg", "登录成功");
//获取Map方式的Session
//ActionContext.getContext().getSession().put("msg", "登录成功");
//获取Map方式的Application
ActionContext.getContext().getApplication().put("msg", "登录成功");
return "success"; } return "error";
}
方法二:通过ServletActionContext访问SerlvetAPI,这种方式没有侵入性,建议使用这种方式
Action类部分代码
import org.apache.struts2.ServletActionContext;
public String execute() throws Exception {
if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
ServletActionContext.getRequest().setAttribute("msg", "登录成功");
ServletActionContext.getResponse();
ServletActionContext.getPageContext().setAttribute("msg", "登录成功");
ServletActionContext.getRequest().getSession().setAttribute("msg", "登录成功");
return "success"; } return "error";
}
方法三:实现装配接口,实现方法(ServletRequestAware,ServletResponseAware)
Action类
package com.djoker.struts2;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware; public class LoginAction implements ServletRequestAware,ServletResponseAware{ private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} private HttpServletRequest request; private HttpServletResponse response; public String execute() throws Exception {
if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
this.request.setAttribute("msg", "登录成功");
return "success"; } return "error";
} @Override
public void setServletResponse(HttpServletResponse response) {
this.response = response;
} @Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
} }