struts2的Action拋棄了request、response等Servlet API,使業務層更加獨立,但有時需要使用request、response,可以考慮使用ServletActionContext靜態方法(叫做非注射方式,非IoC方式)
package cn.test.struts2.action;
import java.io.File;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 17863781QUI;
// 帳號
private String account;
// 密碼
private String password;
// 主方法 如果用戶名密碼匹配 則返回成功頁面 否則返回登錄頁面
public String execute() {
if ("Apl@*987".equalsIgnoreCase(account) && "1234".equals(password)) {
return SUCCESS;
}
return LOGIN;
}
public String login() {
// 獲取 request、response
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
// 將帳號放到 session 中
HttpSession session = request.getSession(true);
session.setAttribute("account", account);
// 獲取web應用根目錄下 /upload 文件夾
ServletContext context = ServletActionContext.getServletContext();
File uploadFile = new File(context.getRealPath("upload"));
return execute();
}
public String logout() {
// 註銷代碼
return "logout";
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
maven中添加
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.16</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>