struts2学习总结(一)

来源:互联网 发布:crm软件价格 编辑:程序博客网 时间:2024/06/06 06:52

学习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>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter    </filter-class>  </filter>  <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>  </filter-mapping>

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

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

2、表达式配置(推荐)

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

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

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

细心的人会发生这里的配置没有写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方法也可获得作用域对象。

0 0
原创粉丝点击