Struts2访问web元素的四种方法
1第一种,也就是最常用的一种,实现RequestAware,SessionAware,ApplicationAware接口
struts以依赖注入方式把request,session和application赋上值。
</pre><pre name="code" class="java">package com.pengli.struts.parampack;
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class MyWinAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
static int actionCount=0;
private Map<String, Object> my_Request;
private Map<String, Object> session;
private Map<String, Object> application;
public String add()
{
AddKey();
return "add";
}
@Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
my_Request=arg0;
}
@Override
public void setApplication(Map<String, Object> arg0) {
// TODO Auto-generated method stub
application=arg0;
}
@Override
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
session = arg0;
}
private void AddKey()
{
++actionCount;
my_Request.put("a1", "Two"+actionCount);
++actionCount;
session.put("a2", "Two"+actionCount);
++actionCount;
application.put("a3", "Two"+actionCount);
}
}
第二种, 实现ServletRequestAware接口,通过得到request后,再通过request获取到session,application
package com.pengli.struts.parampack;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class MyWinAction3 extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public String add() {
setAttribute();
return "add";
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub
request=arg0;
session=request.getSession();
application=session.getServletContext();
}
private void setAttribute() {
request.setAttribute("a1", "ThreeA1");
session.setAttribute("a2", "ThreeA2");
application.setAttribute("a3", "ThreeA3");
}
}
第三种: 用ServletActionContext得到request再得到sesion和application
package com.pengli.struts.parampack;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class MyWinAction4 extends ActionSupport{
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public String add(){
getInfo();
setAttribute();
return "add";
}
private void getInfo()
{
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
}
private void setAttribute()
{
request.setAttribute("a1", "FourA1");
session.setAttribute("a2", "FourA2");
application.setAttribute("a3", "FourA3");
}
}
第四种, 通过ActionContext得到相应的参数
package com.pengli.struts.parampack;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class MyWiAction extends ActionSupport {
private UserModel user;
public String add1()
{
if(user == null)
{
this.addFieldError("user", "user object is null");
return ERROR;
}
if(user.getName()== null||user.getAge() == null)
{
this.addFieldError("name", "name is null");
this.addFieldError("age", "age is null");
return ERROR;
}
System.out.println(user.getAge());
System.out.println(user.getName());
return "add1";
}
static int actionCount=0;
private Map request1;
private Map session1;
private Map application1;
public String add()
{
request1 = (Map)ActionContext.getContext().get("request");
session1=ActionContext.getContext().getSession();
application1 = ActionContext.getContext().getApplication();
AddKey();
return "add";
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
public String add2()
{
return "add2";
}
public String add3()
{
return "add3";
}
private void AddKey()
{
++actionCount;
request1.put("a1", "a1haha"+actionCount);
++actionCount;
session1.put("a2", "a2haha"+actionCount);
++actionCount;
application1.put("a3", "a3haha"+actionCount);
}
public String edit()
{
return "edit";
}
public UserModel getUser() {
return user;
}
public void setUser(UserModel user) {
this.user = user;
}
}