import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.SessionAware;
import com.lanou.struts2.bean.User;
import com.opensymphony.xwork2.ActionContext;
public class UserAction implements SessionAware{
//设置访问域public可以不用get/set方法
// User result=new User();
Map<String, Object> result=new HashMap<>();
String username;
/**
* 建议使用实现了接口的
*/
Map<String, Object> session;//通过实现接口直接获取session,需要get、set方法
public Map<String, Object> getSession() {
return session;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
User user;//域驱动
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String test(){
result.put("status", 1);
result.put("data", new User());
System.out.println(username);
return "foo";
}
public String execute(){
System.out.println("execute方法执行了");
return "error";
}
public String servlrtTest(){//解耦
ActionContext context=ActionContext.getContext();
//Action来了,filter创建对象,不同于servlet,多个action
Map<String, Object> request=(Map<String, Object>) context.get("request");
request.put("item", "hahaha");
Map<String, Object> session=context.getSession();
session.put("item", "FUXINLONG");
Map<String, Object> application=context.getApplication();
application.put("item", "cuidengyi");
Map<String, Object> param= context.getParameters();
String[] str=(String[]) param.get("item");
System.out.println(param.get("item"));
return "error";
}
public String servletTry(){//耦合
HttpServletRequest req=ServletActionContext.getRequest();
req.setAttribute("item", "zz");
ServletContext app=ServletActionContext.getServletContext();
app.setAttribute("item", "jj");
HttpSession session=req.getSession();
session.setAttribute("item", "rr");
return "error";
}
public Map<String, Object> getResult() {
return result;
}
public void setResult(Map<String, Object> result) {
this.result = result;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 开启动态方法的反射过程 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<!-- 开发者模式,用于抛异常,可以直接抛到前端页面 -->
<constant name="struts.devMode" value="true" />
<!--name就是给包起的名字,管理在包下的所有的action ,继承一个包,命名空间-->
<!-- 实现json继承json-default -->
<package name="default" namespace="/" extends="json-default">
<!-- 关联action类和filter -->
<!-- name就是访问的接口名name是起的名字 ,class关联类,method指带执行的方法-->
<!-- <action name="*_*" class="com.lanou.struts2.controller.{1}Action" method="{2}"> -->
<action name="user_*" class="com.lanou.struts2.controller.UserAction" method="{1}">
<!-- execute方法返回的String ,可以放置多个result-->
<!--chain ,redirect 跳转页面或action 重定向到url,可以跳转到其他包下,redirect-action同一命名空间下 -->
<!--type的plainText展现源码,可做介绍, -->
<!--type等于json -->
<result name="foo" type="json">
<!--执行成功跳转页面 -->
<param name="root">
result
</param>
</result>
<result name="error" >
/test.jsp <!-- /{2}.jsp -->
</result>
</action>
</package>
<include file="example.xml"/>
</struts>