struts2学习总结(一)

学习struts2框架,首先是搭建struts2环境:
一、下载struts2jar包(核心jar)并加入到web工程lib目录下:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
freemarker-2.3.16.jar
javassist-3.7.ga.jar
ognl-3.0.jar
struts2-core-2.2.1.1.jar
xwork-core-2.2.1.1.jar
二、配置web.xml:
struts2框架是通过过滤器加载到web工程中的,所以我们只需要在web.xml配置对应的filter就行。

<filter>
        <filter-name>struts2filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    filter-class>
  filter>
  <filter-mapping>
        <filter-name>struts2filter-name>
        /*
  filter-mapping>

其中StrutsPrepareAndExecuteFileter过滤器能够拦截前端请求,使请求交由struts控制器处理。
三、配置struts.xml:
映射路径的配置:
1、常用配置:

name="inittopAction" class="com.sxt.oa.action.InitAction" method="top">
<result name="top">/top.jspresult>

name="inittopAction" class="com.sxt.oa.action.InitAction" method="left">
<result name="top">/left.jspresult>

2、表达式配置(推荐)

name="init*Action" class="com.sxt.oa.action.InitAction" method="{1}">
<result name="{1}">/{1}.jspresult>

其中代表关键字,{1}表示前面的代表的内容。前端请求的action只要符合init*Action的格式就可以请求到这个映射。这样写可以简化配置代码,所以推荐使用。
3、自由配置(自己取得名字,嘿嘿)

name="initAction" class="com.sxt.oa.action.InitAction">
<result name="top.jsp">/top.jspresult>
<result name="left.jsp">/left.jspresult>

细心的人会发生这里的配置没有写method的配置,大家可不要以为我这边是使用默认方法。方法的配置可以放到前端的请求jsp页面上去。如:,其中感叹号后面的top就是对应要访问的方法。
四、action的逻辑实现:
1、对请求表单的处理:
1).属性驱动加载表单:

private String userName;
private String userPwd;
public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPwd() {
        return userPwd;
    }
    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

form表单中只要把name属性写成对应的userName、userPwd即可。
2).javabean驱动加载表单:
把上面的userName、userPwd封装成User类。

private User user;
public Construct(){//空构造方法
     user = new User();
}
public void setUser(){
    this.user = user;
}
public User getUser(){
    return user;
}

form表单中只要把name属性写成对应的user.userName、user.userPwd即可。
3).模型驱动加载表单(推荐):
实现ModelDriven中的getModel()即可。

public class UserAction implements ModelDriven<User>
{
  private User user;
   public UserAction(){
      user = new User();
}
   public User getModel(){//实现ModelDriven接口的方法
      return this.user;
}
}

2、对作用域的处理(请求作用域、会话作用域、工程作用域):
1)、使用ActionContext.getContext()对象调用getApplication()、getSession()获得对应的application、session对象。request对象的功能struts2已封装好,直接使用ActionContext.getContext()对象即可,如:向request请求作用域中添加内容,ActionContext.getContext().put(“user”,getModel())即可(推荐使用该方法)。
2)、使用ServletActionContext类调用getRequest()、getResponse()、getActionContext()可获得相对应的作用域象。
3)、实现RequestAware、SessionAware、ApplicationAware接口,重写其对应的set方法也可获得作用域对象。

你可能感兴趣的:(Struts2)