美文网首页
Struts2_day01

Struts2_day01

作者: 暖熊熊 | 来源:发表于2017-10-27 12:56 被阅读0次

    Struts2_day01

    Struts2课程安排

    第一天 struts2 入门 2017年10月27日

    第二天 struts2 数据 2017年10月28日

    第三天 struts2 值栈 2017年10月29日

    第四天 struts2拦截器 2017年10月30日

    Struts2概述

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

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

    3. struts2解决问题:

      struts2解决问题.png
    4. struts2版本

      比较稳定版本struts-2.3.24-all

    5. web层常见框架

      (1)struts2

      (2)springMVC

    Struts2框架入门

    1. 导入jar包

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

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

    jar包

    2. 创建action

    package com.ghw.action;
    
    public class HelloAction {
        /*
         * (1)每次访问servlet时候,都会执行service方法 
         * - 写类集成HttpServlet,重写类里面的方法
         * - 在web.xml中配置servlet访问路径
         * (2)访问action,每次访问action时候,默认执行名称execute方法
         */
        public String execute() {
            return "ok";
        }
    }
    

    3. 配置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配置

    <!-- name:访问名称 -->
    <action name="hello" class="com.ghw.action.HelloAction">
        <!-- 配置方法的返回值到页面 -->
        <result name="ok">/hello.jsp</result>
    </action>
    

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

    报错

    第四步 配置struts2过滤器

    <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. 名称和位置固定的
    2. 在配置文件中主要三个标签package、action、result,还有标签里面的属性

    一、标签package

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

    2. package标签属性

      (1)name属性

      • name属性值和功能本身没有关系
      • 在一个配置文件中可以有多个package标签,name的值不能相同

      (2)extends属性

      extends="struts-default

      • 属性值固定的,struts-default
      • 写了这个属性值,在package里面配置的类具有action功能

      (3)namespace属性

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

    二、标签action

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

    2. action标签属性

      1. name属性
      • namespace属性值和action标签里面的name属性值构成访问路径
      • 在package标签里面写多个action标签,但是action的name属性值不能相同的
      1. class属性
      • action全路径
      1. method属性
      • 比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法
      • 让action里面多个方法执行,使用method进行配置

    三、标签result

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

    2. result标签属性

      (1)name属性

      • 和方法返回值一样

      (2)type属性

      • 配置如何到路径中(转发或者重定向)
      • type属性默认值,做转发操作

    Struts2常量配置

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

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

    3. 修改struts2默认常量值

      (1)常用的方式

      • 在struts.xml中进行配置

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

      • 在src下面创建 struts.properties,进行修改
      • 在web.xml进行配置
    4. 介绍最常用常量(明天演示)

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

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

      • post提交直接设置编码
      • get提交做编码转换

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

    分模块开发

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

    Action编写方式

    1. action编写有三种方式

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

      public class HelloAction

      第二种 创建类,实现接口 Action

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

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

      import com.opensymphony.xwork2.ActionSupport;
      
      public class HelloAction extends ActionSupport {
      
       public String execute() {
           return "ok";
       }
      }
      

    访问action的方法(重点)

    • 有三种方式实现
    1. 使用action标签的method属性

    在这个属性里面写执行的action的方法

    1. 创建action,创建action方法

      public class HelloAction implements Action {
      
       public String add() {
           System.out.println("add.....");
           return NONE;
       }
      
       public String update() {
           System.out.println("update.....");
           return NONE;
       }
      
       public String execute() throws Exception {
           return null;
       }
      }
      
    2. 使用method配置

    <package name="" extends="struts-default" namespace="/">
     <action name="addAction" class="com.ghw.action.HelloAction" method="add"></action>
     <action name="updateAction" class="com.ghw.action.HelloAction" method="update"></action>
    </package>
    
    2. 使用通配符方式实现
    <package name="action1" extends="struts-default" namespace="/">
     <action name="*" class="com.ghw.action.HelloAction" method="{1}"></action>
    </package>
    
    image.png
    • 在action标签里面name属性,name属性值里面写 符号 * 星号
    • {1}表示获取*号的内容
    • 理解: 表示匹配任意内容
    • 比如访问hello,* 可以匹配到
    • 比如访问add,* 可以匹配到
    3. 动态访问实现(不用)

    相关文章

      网友评论

          本文标题:Struts2_day01

          本文链接:https://www.haomeiwen.com/subject/knmrpxtx.html