Struts2(一)

Struts2概述

应用在三层框架中web层框架

struts1和webwork基础上发展的全新的框架

解决的问题

在这里插入图片描述
在这里插入图片描述

入门案例

开发流程

新建web项目

第一步:导入jar包 (从例子里面直接导)

第二步:创建Action

(1)每次访问servlet执行service方法

  • 继承HttpServlet,重写类中的方法
  • 在web.xml中配置servlet访问路径

(2)每次访问action默认执行execute方法

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

第三步:配置action访问路径

(1)创建action访问路径

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

    • (在src下)struts.xml

(2)引入dtd约束

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

(3)action配置

<!-- struts的action必须放在一个指定的包空间下定义 -->
<package name="liu" extends="struts-default">
 <!-- 
name:访问名称
-->
 <action name="hellodemo" class="com.HelloAction">
     <!-- 根据方法的返回值跳转到页面 -->
     <result name="success">/upload/upload_re.jsp</result>
 </action>
</package>

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

标准浏览器action写不写都没问题

(4)配置struts2过滤器

web.xml

<!--配置struts2过滤器 -->
	<filter>
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

struts2执行的基本过程

在这里插入图片描述

struts2源代码

1、过滤器在服务器启动时创建,创建过滤器时执行init方法

在init方法中加载配置文件

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

  • 自己创建
    • struts.xml
    • web.xml

struts2配置

struts2核心配置文件

1、名称和位置是固定的

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

  • package标签

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

  • package里面有三个属性

    • name:跟功能本身没有什么关系,一个配置文件中可以写多个package标签,name属性值不能相同

    • extends: extends=“struts-default”

      • 属性值固定
      • 写了这个属性,在package中配置的类具有action的功能
    • namespace:

      • 属性值和action标签里面的name属性值构成访问路径,不写默认为/

      • <!-- struts的action必须放在一个指定的包空间下定义 -->
        <package name="liu" extends="struts-default"namespace="/">
         <!-- 
        name:访问名称
        -->
         <action name="hellodemo" class="com.HelloAction">
             <!-- 根据方法的返回值跳转到页面 -->
             <result name="success">/upload/upload_re.jsp</result>
         </action>
        </package>
        
        <!-- 访问路径为http://127.0.0.1:8080/xxx/hello.action-->
        
  • action标签

1、action标签配置action的访问路径

2、action标签属性

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

1、根据action的返回值,配置到不同的路径里面(页面/action)

2、result标签的属性

  • name属性:与方法的返回值一样

    • <result name="ok">/hello.jsp</result>
      
  • type属性:

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

struts2常量配置

1、常用方式

  • 在strusts.xml中进行配置


2、还有两种方式

- 在src下面创建struts.properties进行修改
- 在web.xml下进行配置

常用配置

在这里插入图片描述
1、表单提交到action里面,在action可以获取表单提交数据

2、表单提交数据有中文乱码问题,解决方法:

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

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

分模块的开发

单独写配置文件,把配置文件引入到核心配置模块当中

<!-- 引入hello.xml-->
<include file="cn/zzb/action/hello.xml"></include>

Action的编写方式

1、action的编写有三种方式

  • 第一种 创建普通类,不继承,不实现

  • public class UserAction {
    
    }
    
  • 第二种 创建类,实现接口Action

  • 实现接口里面的方法execute

  • public class UserAction implements Action{
    	//....
    }
    
  • 第三种 创建类,继承ActionSupport

  • public class UserAction extends ActionSupport{
    	//....
    }
    

Action方法的访问

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

第二种:使用通配符方式实现(最多)

  • <action name="book_*" class="cn.zzb.BookAction" method={1}>
    
    • 其中book_add 对应 method: add
  • *号匹配任意字符

第三种:动态访问实现

经常错误:

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

2、在action方法有返回值,如果有返回值,返回值必须是String

3、action方法里面可以没有返回值,result标签不需要配置

  • 方法写void
  • 返回值写NONE(或者“none”)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值