Struts2 (1) 基础入门

200 阅读3分钟

Struts2:核心配置文件

package标签

  • 1: 类似于代码包,区别不同的action,要配置action,必须首先写package标签,在package里面才能配置action
  • 2: package标签属性。
    • (1) name属性:
      • name属性值跟功能本身没有关系的,
      • 在一个配置文件中可以写多个package标签,name属性值不能相同的。
    • (2) extends属性:
      • 属性值是固定的extends="struts-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属性默认值做转发操作。 源码:
  • src:struts.xml
	<package name="hellodemo" extends="struts-default" namespace="/">
		<!-- name:访问名称 -->
		<action name="hello" class="com.yap.action.HelloAction">
			<!-- 配置方法的返回值到页面 -->
			<result name="ok">/hello.jsp</result>
		</action>
	</package>

修改Struts2默认常量值

  • 1: 常用方式
    • struts.xml中进行配置。
      • <constant name="struts.i18n.encoding" value="UTF-8"/>
  • 2: 还有两种方式(了解)。
    • src下面创建struts.properties进行修改
    • web.xml进行配置。

介绍最常用常量

  • struts.i18n.encoding = UTF-8
  • 1: 表单提交数据到action里面,在action可以获取表单提交数据,
  • 2: 表单提交数据有中文,有乱码间题,解决:
    • post提交直接设置编码
    • get提交做编码转换
  • 3: 如果在action获取表单通过post方式提交中文,中文乱码间题帮解决了,不需要自己处理问题。

分模块开发

  • 1: 单独写配置文件,把配置文件引入到核心配置文件中
    • <include file="路径"/> :引入xml路径。

Action的编写方式

  • 1: action编写有三种方式
    • 创建普通类,这个不继承任何类,不实现任何接口
    • 创建类,实现接口Action
    • 创建类,继承类ActionSupporte

访问action的方法(重点)

  • 1: 有三种方式实现
    • (1) 使用action标签的method属性,在这个属性里面写执行的action的方法。
    • (2) 使用通配符方式实现。
    • (3) 动态访间实现(不用)。
  • 2: 演示错误
    • (1) 如果action方法有返回值,但配置文件没配置会出现这种错误。
      • No result defined for action cn.itcast.action.HelloAction and result ok
    • (2) 在action里面的方法有返回值,如果有返回值时候类型必须是String
    • (3) action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置
      • 把方法返回值写出void。
      • 让返回值,返回NONE。
<!--  使用action标签method属性 -->
<!--  创建action,创建多个方法,缺陷是每个action方法都需要创建。 -->
public class BookAction extends ActionSupport {
	// 添加
	public String add() {
		System.out.println("add...........");
		return NONE;
	}

	// 修改
	public String update() {
		System.out.println("update.........");
		return NONE;
	}
}
  • xml:struts.xml
	<!-- 配置action的方法访问 -->
	<package name="methoddemo" extends="struts-default" namespace="/">
	
	 <!-- 有method属性:写要执行的action里面的方法的名称 -->
		<action name="addAction" class="com.yap.method.BookAction" method="add"></action>
		<!-- 执行update方法 -->
		<action name="updateAction" class="com.yap.method.BookAction" method="update"></action>
	</package>

  • psm:http://localhost/Struts2_demo/updateAction.action
  • psm:http://localhost/Struts2_demo/addAction.action

使用通配符实现

  • 1:action标签里面name属性,name属性值里面写符号*星号
  • xml:struts.xml
	<!-- 通配符方式实现 -->
<package name="methoddemo" extends="struts-default" namespace="/"> 
	<!-- 
	name属性值里面写符号* 
	(1)执行action里面的add方法,访问book_add,使用book_*可以匹配到,*相当于变成add 
	
	(2)执行action里面的update方法,访问book_update,使用book_*可以匹配到,*相当于变成update
	上面两个路径使用book_*可以匹配到 
	method属性写*值 
	-->
	<action name="book_*" class="com.yap.method.BookAction" method="{1}"></action>
</package>
  • psm:http://localhost/Struts2_demo/book_update.action
  • psm:http://localhost/Struts2_demo/book_add.action