[align=center][size=large]struts2笔记之第七讲[/size][/align]
导语:Struts2的Action访问Servlet API,有三种方式:上一节课中已经讲了第一方式。可以通过ActionContext访问Servlet API。
三种方式:
1.可以通过ActionContext访问Servlet API 此种方式没有侵入性(这个其实是间接把Session放到中间的map里)
2.可以通过实习装配接口,完成对Servlet API的访问
*ServletRequestAware取得HttpServletRequest对象
*ServletResponseAware取得HttpServletResponse对象
*ServletContextAware取得ServletContext对象(工具类)
3.可以通过ServletActionContext提供的静态方法取得Servlet API
*getPageContext();
*getRequest();
*getResponse();
*getServletContext();
下面折重讲第二中方式和第三种方式,第一种请参阅第一章节。
[b]2.可以通过实习装配接口,完成对Servlet API的访问[/b]
例子:
LoginAction.java
MustLoginAction.java
index.jsp文件核心代码
省略的jsp页面有:login.jsp、login_error.jsp、login_success.jsp、must_login.jsp
[b]3.可以通过ServletActionContext提供的静态方法取得Servlet API[/b]
LoginAction.java
MustLoginAction.java
导语:Struts2的Action访问Servlet API,有三种方式:上一节课中已经讲了第一方式。可以通过ActionContext访问Servlet API。
三种方式:
1.可以通过ActionContext访问Servlet API 此种方式没有侵入性(这个其实是间接把Session放到中间的map里)
2.可以通过实习装配接口,完成对Servlet API的访问
*ServletRequestAware取得HttpServletRequest对象
*ServletResponseAware取得HttpServletResponse对象
*ServletContextAware取得ServletContext对象(工具类)
3.可以通过ServletActionContext提供的静态方法取得Servlet API
*getPageContext();
*getRequest();
*getResponse();
*getServletContext();
下面折重讲第二中方式和第三种方式,第一种请参阅第一章节。
[b]2.可以通过实习装配接口,完成对Servlet API的访问[/b]
例子:
LoginAction.java
package com.struts2;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction implements Action,ServletRequestAware,ServletResponseAware {
private String username;
private String password;
[color=red] private HttpServletRequest request;
private HttpServletResponse response;[/color]
/**
* struts2 默认调用这个方法,返回字符串
* @return
* @throws Exception
*/
public String execute() throws Exception{
if("admin".equals(username) && "admin".equals(password)){
request.getSession().setAttribute("user", username);
return "success";
}else{
return "error";
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response=response;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
}
MustLoginAction.java
package com.struts2;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class MustLoginAction implements Action,ServletRequestAware {
private HttpServletRequest request;
@Override
public String execute() throws Exception {
if(request.getSession().getAttribute("user")==null){
//重定向到登陆页面
return LOGIN;
}else{
return SUCCESS;
}
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
}
index.jsp文件核心代码
<a href="login.jsp">登陆</a> <br>
<a href="mustLogin.action">访问受保护的页面</a> <br>
省略的jsp页面有:login.jsp、login_error.jsp、login_success.jsp、must_login.jsp
[b]3.可以通过ServletActionContext提供的静态方法取得Servlet API[/b]
LoginAction.java
package com.struts2;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction implements Action {
private String username;
private String password;
/**
* struts2 默认调用这个方法,返回字符串
* @return
* @throws Exception
*/
public String execute() throws Exception{
if("admin".equals(username) && "admin".equals(password)){
ServletActionContext.getRequest().getSession().setAttribute("user", username);
return "success";
}else{
return "error";
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
MustLoginAction.java
package com.struts2;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class MustLoginAction implements Action {
private HttpServletRequest request;
@Override
public String execute() throws Exception {
if(ServletActionContext.getRequest().getSession().getAttribute("user")==null){
//重定向到登陆页面
return LOGIN;
}else{
return SUCCESS;
}
}