struts2笔记之第七讲

[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

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;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值