Struts2_day01

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_day01_第1张图片
    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包

Struts2_day01_第2张图片
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约束



(3)action配置



    
    /hello.jsp

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

Struts2_day01_第3张图片
报错

第四步 配置struts2过滤器


    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


    struts2
    /*

Struts2_day01_第4张图片
成功

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


 
 

2. 使用通配符方式实现

 

Struts2_day01_第5张图片
image.png
  • 在action标签里面name属性,name属性值里面写 符号 * 星号
  • {1}表示获取*号的内容
  • 理解: 表示匹配任意内容
  • 比如访问hello,* 可以匹配到
  • 比如访问add,* 可以匹配到
3. 动态访问实现(不用)

你可能感兴趣的:(Struts2_day01)