struts2知识点总结1

struts2知识点总结

  • 什么是Struts2

Struts2 是一个MVC框架,重点在控制器上

Struts1 + xword=Struts2

背景:在web开发中,不同的功能采用不同的Servlet,造成维护和管理的不便;

struts2通过过滤器,将不同的操作引导到不同的方法执行中去。

  • Struts2 的配置
  1. 导入jar包 Struts2的压缩包->apps->struts2-rest-showcase.war->

        WEB-INF->lib(导入struts2-rest-plugin-2.5.18.jar可能会报错,所以可以不导入该包)

  1. 创建action,action是一个类,每次访问action的时候,默认会执行execute()
  2. 配置action的访问路径,创建Struts2核心配置文件:核心配置文件名称和位置是固定的,名称:struts.xml 位置:/src (普通javaee项目),maven项目在资源文件下
  3. 引入dtd的约束:struts2-core-2.* ->struts-2.*.dtd中有对应的约束

  <!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

  1. action的配置(核心标签):

package:

name属性:包的名称,用于区分Action

extends:标准声明,继承struts-default

namespace:命名空间,用于声明访问项目的根路径

        action:

            name 属性:action 的访问名称

            class:action 类的全路径

            method:执行action中的指定方法(默认执行execute)

        result:

            name:和方法的返回值对应

            type:指定页面请求的方式

                 dispatcher(默认,转发)

                 redirect:重定向(到jsp)

                 redirect-action:重定向到(action)

                 chain:访问链

  1. 在web.xml 中配置过滤器
<filter>

    <filter-name>action</filter-name>

    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>



<filter-mapping>

    <filter-name>action</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

 

  • struts2的执行过程

关于过滤器:StrutsPrepareAndExecuteFilter

过滤器在服务启动的时候创建,创建过程时执行init方法,并加载配置文件,包括自带的配置文件

default.properties

struts-default.xml

struts-plugin.xml

struts.xml

struts.propersties

web.xml

前三个是struts2 的标准内部配置文件,无法修改,后三个可以,我们的配置重点在后面三个文件中;启动加载有顺序;struts2 可以配置常量,后三个文件都可以,但后面声明的会覆盖之前的常量

  • struts2中配置修改常量

struts.xml中修改(常用)

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

在src下创建struts.properties,并在其中修改(较少用)

在web.xml中创建(少用)

在struts2中,通过表单向action提交数据中含有中文时,框架会帮我们解决编码的问题,不需要额外处理

  • struts2的分模块开发

使用include标签

<include file="com/ehome/action/hello.xml"></include>
  • action的三种编写方式
  1. 声明一个普通的action类,不继承也不实现任何接口
  2. 创建类,实现Action接口
  3. 创建类,继承ActionSupport(主要)
  • 访问action的方法(重要)
  1. 使用action标签的method属性,通过设置,指定要执行的action
  2. 使用通配符,在action标签中,用*来设置name属性

但struts2 2.5需要在package中配置

<global-allowed-methods>regex:.*</global-allowed-methods>

 

  1. 动态访问方式(了解)

在action方法中存在返回值,如果有返回值则必须是String,也可以没有返回值,指定execute方法返回值为void,或者返回NONE,在result标签中就不需要配置

  • 结果页面配置

全局结果页面:

如果有多个action,它们的返回值相同、配置的页面也相同

<!--全局结果配置,局部优先级更高-->

<global-results>

    <result name="success">/hello.jsp</result>

</global-results>

注:注意标签的顺序 <global-results> 要在<global-allowed-methods>regex:.*</global-allowed-methods> 之前,拦截器在最前面

局部结构界面:

<action name="form_*" class="com.xh.ehome.control.FromAction" method="{1}">

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

</action>

 

  • 在action中获取表单提交的顺序
  1. 使用ActionContext获取(非重点)

  1. 使用ServletActionContext(重要)
  2. 使用接口注入方式(少用)

    核心: 实现ServletRequestAware接口

实现接口:

重写setServletRequest方法,一旦被调用,就可以获取request对象

把该对象赋值给Action自己定义的request对象(传递引用)

4、在action中操作域对象

request、session、servletContext 三种作用域的传值

核心:使用ServletActionContext

在jsp中通过域对象获取数据

  1. Struts2 提供获取表单数据的方式(将获取的表单数据进行封装)

4.1 使用request分别获取属性,并调用bean方法(原始)

   

      4.2属性封装:在action中声明表单项对应的字段,并指定bean方法即可

4.3 模型驱动封装(可以直接把值封装到对象中,重点)

    核心:

action实现ModelDriven接口,并重写getModel方法

在action中声明实体类对象并实例化

在getModel方法中返回该实体对象,完成

注意:不能同时使用属性封装和模型驱动封装,如果都用,只会执行模型驱动封装(定义的属性将得不到值)

        4.4 表达式封装(非重点)

        核心:

把表单数据封装到实体类对象中,只需创建对象不需实例化,

为该对象声明get和set

在表单输入项中写表达式: user.username

 

表达式封装和模型驱动封装对比:都可以把数据封装到实体类对象中去

但,模型驱动封装只能封装到一个实体类对象中,而表达式封装可以封装到多个不同的对象中

4.5表单数据封装到List/Map 中(和表达式封装类似)

List的封装

 

Map的封装

 

 

 

 


 

 


 

猜你喜欢

转载自blog.csdn.net/hepan_/article/details/84782474
今日推荐