• struts2基本配置


    Struts2概述

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

      2 struts2框架在struts1和webwork基础之上发展全新的框架

      3 struts2解决问题:

        

      4 struts2版本

        2.3.24

      5 web层常见框架

        (1)struts2

        (2)springMVC

    Struts2框架入门

      第一步 导入jar包

        (1)在lib中有jar包,不能把这些jar都导入到项目中

        (2)到apps目录里面,找到示例程序,从示例程序复制jar包

      第二步 创建action

    public class HelloAction {
        
        public String execute() {
            return "ok";
        }
    }

      第三步 配置action类访问路径

        (1)创建struts2核心配置文件

        - 核心配置文件名称和位置是固定的

        - 位置必须在src下面,名称 struts.xml

        (2)引入dtd约束

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

        (3)action配置

    <struts>
    
        <package name="hellodemo" extends="struts-default" namespace="/">
        
            <action name="hello" class="com.wm.hello.HelloAction">
                <result name="ok">/hello.jsp</result>
            </action>
        </package>
    
    </struts>

      第四步 配置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执行过程

    Struts2的核心配置文件:struts.xml

      1 名称和位置固定的

           src根目录下

      2 在配置文件中主要三个标签 package、action、result,标签里面的属性

      标签package

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

          2 package标签属性

          (1)name属性

          - name属性值根功能本身没有关系的,

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

          (2)extends属性

          - 属性值固定的,struts-default

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

          (3)namespace属性

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

      标签action

        1 action标签配置action访问路径

        2 action标签属性

          (1)name属性

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

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

          (2)class属性

          - action全路径

          (3)method属性

          - 比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法

          - 让action里面多个方法执行,使用method进行配置

      标签result

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

        2 result标签属性

          (1)name属性

          - 和方法返回值一样

          (2)type属性

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

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

    Struts2常量配置

      1 struts2框架,帮我们实现一部分功能,struts2里面有常量,在常量里面封装一部分功能

      2 修改struts2默认常量值

        (1)常用的方式

        - 在struts.xml中进行配置

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

        - 在src下面创建 struts.properties,进行修改

        - 在web.xml进行配置

      3 最常用常量

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

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

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

        - post提交直接设置编码

        - get提交做编码转换

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

    分模块开发

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

        <include file="com/wm/hello/hello.xml"></include>

    Action编写方式

      1 action编写有三种方式

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

    public class HelloAction {
    
    }

        第二种 创建类,实现接口 Action : 必须重写execute方法

    public class HelloAction implements Action{
        
        public String execute() {
            return "ok";
        }
    }

        另外可以使用Action中的变量SUCCESS,NONE,ERROR来表示返回成功,无返回,失败

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

    public class HelloAction extends ActionSupport{
        
        public String execute() {
            return "ok";
        }
    }

     

    访问action的方法(重点)

      1 有三种方式实现

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

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

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

      2 演示错误

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

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

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

      - 把方法写成void

      - 让返回值,返回 ”none”

        public String execute() {
            return NONE;
        }

    使用action标签method属性

      1 创建action,创建多个方法

        public String add() {
            System.out.println("add......");
            return NONE;
        }
        
        public String update() {
            System.out.println("update......");
            return NONE;
        }

      2 使用method配置

            <action name="add" class="com.wm.hello.HelloAction" method="add"></action>
            <action name="update" class="com.wm.hello.HelloAction" method="update"></action>

        缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的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属性写*值
             -->
            <action name="book_*" class="cn.itcast.method.BookAction" method="{1}">
  • 相关阅读:
    20180925-2 功能测试
    【PL/SQL编程】循环语句
    【PL/SQL编程】条件语句
    【PL/SQL编程】变量和常量
    【PL/SQL编程】数据类型说明
    【PL/SQL编程】注释说明
    【PL/SQL编程】SQL与PL/SQL的区别
    【SQL查询】查询结果翻译成其他值_decode
    【SQL查询】日期的转换_to_date/to_char
    【SQL查询】视图_view
  • 原文地址:https://www.cnblogs.com/kpsmile/p/10089151.html
Copyright © 2020-2023  润新知