Struts2简短的学习笔记

Struts2自学

一.环境搭建

首先在web.xml配置文件里面进行如下配置:

  <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>

然后,导入相应的Struts2相应的包,在src目录下面新建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>

<package name="default" namespace="/" extends="struts-default">

<action name="helloworld" class="com.action.HelloWorldAct">

<result >/result.jsp</result>

</action>

</package>

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

</struts>

DynamicMethodInvocation是异步调用,用于感叹号调用Jsp页面

 

二.动态方法调用

动态方法调用

 

动态方法调用是为了解决一个Action对应多个请求的处理,以免Action太多。

三种方式:指定method属性、感叹号方式、通配符方式

1. <action name="addAction" method="add" class="com.imooc.action.HelloWorldAction">

http://localhost:8080/HelloWorld/addAction.action

2. <constant name="struts.enable.DynamicMethodInvocation" value="true">                                                </constant>

<action name="helloworld" class="com.imooc.action.HelloWorldAction">

      <result >/result.jsp</result>

      <result name="add">/add.jsp</result>

      <result name="update">/update.jsp</result>

      </action>

http://localhost:8080/HelloWorld/helloworld!add.action

3. <action name="*_*" method="{2}" class="com.imooc.action.{1}Action">

      <result >/result.jsp</result>

      <result name="add">/{2}.jsp</result>

      <result name="update">/{2}.jsp</result>

      </action>

http://localhost:8080/HelloWorld/HelloWorld_update.action

三.Struts后缀

struts2后缀:

三种方式:

1.struts.properties中:struts.action.extension=action,do,struts2

2.xml中增加常量constant

<constant name="struts.action.extension" value="action,do,struts2"></constant>

3.在过滤器中配置intt-param参数:

<init-param>

  <param-name>struts.action.extension</param-name>

  <param-value>do,action,strtus2</param-value>

</init-param>

 

四.接收参数

接收参数

1,使用Action的属性接受参数,在Action中定义需要接受的属性,并写它的set/get方法。

2,使用DomainModel接受参数,创建实体类定义需要接受的属性,并set/get方法,在Action中创建实体类名属性。并在界面进行指定。

3,使用ModelDriver接受参数,在Action中实现ModelDriver<实体类名>接口,并实现方法返回当前需要转换的对象,删除set/get方法,并对 对象 进行实例化,并取消指定。

4request

5,获取List集合中的参数。获取多个参数。

 

第一种接收参数的方法:直接在action类中创建相应的属性和gettersetter,和前端的name名字相同。eg:前端的username,在action类中就要建立一个private String username; Struts会自动映射为这个属性赋值

 

第二种接受参数的方法:使用DomainModel,将username password两个属性封装为一个类User(必须是标准的JavaBean),在action中声明这个属性:private User user; 同时为user设置gettersetter;在前端中的name需要设置为user.nameuser.password,才能映射成功

 

第三种接收参数的方法:使用ModelDriven<T>接口,这个action必须实现这个接口的public T getModel()方法。此时声明的属性必须实例化,eg: private User user = new User(); 同时不需要gettersetter。前端的name也只需要写usernamepassword就可以,不需要再加域了。这种方法时最推荐的方法,因为可以减少前后端的耦合

 

五.拦截器的应用

1.定义拦截器

1.1.创建一个拦截器类继承自AbstractInterceptor

1.2.实现intercept方法

eg:

public String intercept(ActionInvocation invocation) throws Exception {

//1.执行action之前

long start=System.currentTimeMillis();

//2.执行下一个拦截器,如果是最后一个拦截器,则执行目标action

String result=invocation.invoke();

//3.执行action之后

long end=System.currentTimeMillis();

//4.花费的时间

long time=end-start;

System.out.println("执行花费的时间: "+time+" ms");

return result;

}

2.配置拦截器

       <interceptors>

        <interceptor name="timeinterceptor" class="com.imooc.interceptor.TimerInterceptor"></interceptor>

<interceptor-stack name="myStack">(一般与默认的拦截器栈组成拦截器栈)

<interceptor-ref name="defaultStack"></interceptor-ref>

<interceptor-ref name="auth"></interceptor-ref>

</interceptor-stack>

       </interceptors>

3.引用拦截器

<interceptor-ref name="timeinterceptor"></interceptor-ref>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值