zoukankan      html  css  js  c++  java
  • Struts2框架

    1、struts2概述

    1. struts2框架应用javaEE三层结构中web层框架

    2. struts2框架在struts1和webwork基础之上发展的一个全新的框架,此处注意struts2struts1用法是完全不一样的

    3. struts2解决的问题:在以前执行一个管理系统中的增删改查操作的时候,需要为每一个增删改查操作创建一个Servlet,如果功能很多,需要创建很多的Servlet,这会造成维护的不方便,而在struts2中可以很好的解决。struts2执行过程如下:

     

     

     

     

     

     

     

     

    4. struts2版本:struts2里面有很多的小版本

    5. web层常见框架

    (1)struts2

    (2)SpringMVC

    2、struts2框架入门

    第一步:导入jar

    (1)struts包中,在lib中有jar包,不能把这些jar都导入到项目中,因为有一些暂时用不到,导入进去会出错

    (2)apps目录里面,这里面放的都是示例程序,找到示例程序,从示例程序里面复制jar包到工程里面

       第二步:创建action

    (1)Servlet中,每次访问Servlet的时候,都会执行service方法

    (2)现在在struts2中,访问action,每次访问action的时候,都默认执行execute方法-------------配置action类的访问路径

    第三步:配置action访问路径

    (1)创建struts2核心配置文件,配置文件名称和位置是固定的,位置必须在src下面,名称是struts.xml

    (2)引入dtd约束

    struts2apps示例程序中src目录下Struts.xml中可以直接把约束复制下来

    <!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd">

     

     

    (3)action的配置

    <?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="hellodemo" extends="struts-default" namespace="/">

    <!--name:访问名称url  -->

    <action name="hello" class="com.test.action.HelloAction">

    <!-- 配置execute方法的返回值到不同的页面中去,/hello.jsp结果返回到hello.jsp页面中 -->

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

    </action>

    </package>

    </struts>

     

    访问路径:http://localhost:8080/struts2_day01/hello.action

    这个时候访问,会报404错误,因为没有配置过滤器

    (4)配置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可以节省许多代码,但是需要写配置文件

     

     

    3、struts2基本执行过程

    执行图示:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    执行过程中,注意反射部分的代码。

     

    4、查看源代码

    过滤器:

     

     

    1. 过滤器在服务器启动的时候创建,创建过滤器时候执行init()方法

    (1)init方法中主要加载配置文件

    -----包含自己创建的配置文件和struts2自带的配置文件

    **struts.xml

    **web.xml

     

     

     

     

    5、struts2相关配置(1)Struts2的核心配置文件

    1. 名称和位置都是固定的,名称是struts.xml  位置在src下面

     

     

    2. 在配置文件中主要三个标签 packageactionresult、标签里面的属性

    Package标签

    1. 类似于代码包,区别不同的action,要配置action,必须首先写package标签,写了package标签,在package里面才能配置action

    2. Package标签属性

    (1)name属性

         name属性值跟功能本身没有关系的

         在一个配置文件中可以写多个package标签,name属性值不能相同的

     

    (2)extends属性

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

       属性值是固定的,structs-default

       写了这个属性值之后,在package里面配置的类具有action功能

     

    (3)namespace属性

      ---  namespace属性值和action标签里面的name属性值构成访问路径

     

     

     

     

     

    Action标签

    1. action标签配置action访问路径

     

    2. Action标签属性

    (1)name属性

       --namespace属性值和action标签里面的name属性值构成访问路径

       --可以在package标签里面写多个action标签,但是actionname属性值不能相同的

     

    (2)class属性

      --action全路径

    (3)method属性

    action里面默认执行execute()方法,但是在action里面也写了其他的方法,如果让action里面的多个方法执行,使用method进行配置

     

    Result标签

    1. 根据action的方法返回值,配置到不同的路径里面

     

    2. Result标签属性

    (1)name属性

    --和方法返回值一样

     

     

    (2)type属性

       --配置如何到路径中(转发或者重定向)

       --type属性值默认是做转发操作

     

     

     

     

    2Struts常量配置

    1. struts框架,帮我们实现一部分功能,struts里面有常量,在常量里面封装一部分功能。Stmts2的这些常量大多在默认的配置文件中已经配置好,但根据用户需求的不同,开发的要求 也不同,可能需要修改这些常量值,修改的方法就是在配置文件对常量进行重新配置。

     

    2.struts默认的常量位置(记住)

     

     

     

     

    3. 修改structs2默认常量值

    (1)常用的方式

       struts.xml中进行配置

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

    (2)还有两种方式(了解)

     

    <1>src下面创建struts.properties,进行修改。struts.properties文件是一个标准的properties文件,其格式是key-value对,即每个key对应一个 value, keyStruts2框架中的常量,而value则是其常量值。

     

    <2>web.xml进行配置,在web.xml文件中通过< imt-param>元素配置常量

     

     

    4.介绍几种最常用的常量

    Struts.i18n.encoding=UTF-8

    (1)表单提交数据到action里面,在action里面可以获取表单提交数据

    (2)表单提交数据有中文,有乱码问题,解决方式:

       Post 提交直接设置编码

       Get 提交做编码转换

    3)如果在action获取表单通过post方式提交中文,中文乱码问题帮我们解决了,不需要自己处理问题

     

     

    6、分模块开发

    在实际开发中,我们通常很多人都需要修改同一个配置文件就是struts.xml。因为这个文件是 Stmts2的核心配置文件。而且这个文件一旦改错了一点,那么会导致整个项目都会出现问题,所以 Struts2提供了<include>标签解决这个问题。Stmts2允许将一个配置文件分解成多个配置文件,从而提高配置文件的可读性。Struts2默认只加载src下的struts.xml文件,但一旦通过多个xml文件来配置 Action,就必须通过struts.xml文件来包含其他配置文件。

    解决方式:

    1. 单独写配置文件,把配置文件引入到核心配置文件中

     

     

    <!--不指定路径默认在src下时的方式-->

    include file=nstruts-shop.xml/>

    <include file="nstruts-user.xml"/>

    <include file="nstruts-shoppingcart.xml"/>

    <!-- 配置文件在具体包中时的方式 -->

    <include file="com/test/action/struts-product.xml">

    </struts>

     

     

     

     

    7Action编写方式

    1. action 编写有三种方式

    第一种,创建普通类,这个不继承任何类,不实现任何接口

     

    第二种:创建类,实现接口action

     

    Action接口位于xwork2包中。这个接口里只定义了 一个execute()方法,该接口的规范规定了 Action处理类应该包含一个execute()方法,该方法返回一 个字符串。除此之外,该接口还定义了 5个字符串常量,它们的作用是统一 execute方法的返回值。接口中提供了 5个己经定义的常量如下

     

    success,代表成功

    none,代表页面不跳转

    error,代表跳转到错误页面

    input,数据校验的时候跳转的路径

    login,用来跳转到登录页面

     

    第三种:创建类,继承类ActionSupport(一般使用)

     

     

     

     

     

    ActionSupport类本身实现了Action接口,是Struts2中默认的Action接口的实现类,所以继承ActionSupport 就相当于实现Action 接口。ActionSupport 类还实现了ValidateableValidationAwareTextProviderLocaleProviderSerializable等接口,来为用户提供更多的功能。ActionSupport类中提供了许多默认方法,这些默认方法包括获取国际化信息的方法、数据校验的方法、默认的处理用户请求的方法等。实际上,ActionSupport类是Struts2默认的Action处理类, 如果让开发者的Action类继承该ActionSupport类,则会大大简化Action的开发。

     

     

     

     

    8、访问action的方法

    1. 有三种方式实现

    第一种:使用action标签的method属性,在这个属性里面写执行的action的方法

    第二种:使用通配符方式实现

    第三种:动态访问实现(一般不用)

    2. 错误演示

    (1)如果action方法有返回值,在配置文件中没有配置,出现错误

     

     

    (2)action里面的方法有返回值,如果有返回值时候,返回值类型必须是String

    (3)Action里面的方法可以没有返回值,没有返回值的时候,在result标签中不需要配置

       --把方法写成void

       --让返回值,返回“none

     

     

     

     

    * 使用action标签method属性

    其实我们学过在〈action〉的标签中有一个属性method,通过method的配置来指定Action中的某个方法执行

    1.action方法中编写几个方法

     

    3. 使用method进行配置

     

    但是这种方式我们会发现,同一个Action类就被配置了很多次,只是修改了后面的method的值。那么能不能配置简单化呢?也就是一个Action类,只配置一次就好了?这个时候我们就需要使 用通配符的配置方式了

     

    * 使用通配符实现(重点掌握)

    1. action标签里面name属性,name属性值里面写符号 * 星号

    (1)*号理解:

           比如访问hello*可以匹配到

           比如访问add *可以匹配到

    name属性值里面写符号*

    1)执行action里面的add方法,访问book_add,使用book_*可以匹配到,*相当于变成add

     

    2)执行action里面的update方法,访问book_update,使用book_*可以匹配到,*相当于变成update

    上面两个路径使用book_* 可以匹配到

    method属性写*


     

    图解:

     

     

     

     

     

     

     

  • 相关阅读:
    null in ABAP and nullpointer in Java
    SAP ABAP SM50事务码和Hybris Commerce的线程管理器
    Hybris service layer和SAP CRM WebClient UI架构的横向比较
    SAP ABAP和Linux系统里如何检查网络传输的数据量
    SAP CRM WebClient UI和Hybris的controller是如何被调用的
    SAP CRM和Cloud for Customer订单中的业务伙伴的自动决定机制
    SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
    SAP BSP和JSP页面里UI元素的ID生成逻辑
    微信jsapi支付
    微信jsapi退款操作
  • 原文地址:https://www.cnblogs.com/leo1014/p/9929563.html
Copyright © 2011-2022 走看看