Struts2入门及配置

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

Struts2是一个基于MVC设计模式的WEB层框架

简单实现功能

  • 创建一个JSP页面
<h3><a href="${pageContext.request.contextPath }/demo01.action">进入action</a></h3>
  • 编写Action类
public class Demo01 {
	public String execute(){
		System.out.println("hello action!");
		
		return null;
	}
}
  • 对Action进行配置
    在src下创建名称叫做struts.xml的配置文件
	<?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">
	
	<struts>
	
	    <!-- struts2 为了管理Action的配置,通过包进行管理 -->
	    <!-- 配置Struts2的包 -->
		<package name="demo01" extends="struts-default" namespace="/">
			<!-- 配置action -->
			<action name="demo01" class="com.sssddd.struts.demo.Demo01">
				<!-- 配置页面的跳转 -->
				<result name="success">/demo01/success.jsp</result>
			</action>
		</package>
		
	</struts>
  • 配置前端控制器,在web.xml 中
 <!-- 配置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>
  • 改写Action中方法的返回值
public class Demo01 {
	public String execute(){
		System.out.println("hello action!");
		
		return "success";
	}
}
  • 改写struts.xml
    在action中添加result
<action name="demo01" class="com.sssddd.struts.demo.Demo01">
				<!-- 配置页面的跳转 -->
				<result name="success">/demo01/success.jsp</result>
			</action>
  • 创建success.jsp

点击超链接,控制台显示hello struts!,客户端跳转到success.jsp

Struts2 的执行流程

请求–> 核心过滤器(StrutsPrepareAndExecuteFilter)–>执行一组拦截器(完成部分功能)–>Action–>Result

加载顺序

default.properties
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
注意:后配置的常量的值会覆盖先配置的常量的值

Action的配置

  • package的相关配置
  1. package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。
  2. package标签的属性
    name :包的名称,只有在一个项目中不重名即可。
    extends :继承哪个包,通常值为struts-default。
    namespace :名称空间,与标签中的name属性共同决定访问路径。
    名称空间有三种写法:
    带名称的名称空间 :namespace=”/aaa”
    跟名称空间 :namespance=”/”
    默认名称空间 :namespace=””
    abstract :抽象的,用于其他包的继承。
  • action相关配置
    action标签配置Action类。
    action标签的属性
    name :与namespace共同决定访问路径
    class :Action类的全路径
    method :执行Action中的哪个方法的方法名,默认值execute
    converter :用于设置类型转换器

常量的配置

  • struts2提供了很多的常量,在default.properties
  • 可有三个位置进行修改
    1. struts.xml中进行修改

      <!-- 配置常量,设置扩展名 -->
      		<constant name="struts.action.extension" value="action"></constant>
      
    2. struts.properties中进行修改

    3. web.xml中进行修改

      <!-- 配置struts2核心过滤器 -->
      	<filter>
      		<filter-name>struts2</filter-name>
      		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      		<!-- 配置常量 -->
      		<init-param>
      			<param-name>struts.action.extension</param-name>
      			<param-value>action</param-value>
      		</init-param>
      	</filter>
      

Action的写法

  • Action类是POJO的类
public class Demo01 {
	public String execute(){
		System.out.println("hello action!");
		
		return "success";
	}
}
  • Action类实现了一个Action的接口
/**
 * 在Action接口中提供了五个常量(五个逻辑视图的名称)
 * 		* SUCCESS	: 成功
 * 		* ERROR		:失败 
 * 		* LOGIN		:登录出错页面跳转
 * 		* INPUT		:表单校验的时候出错
 * 		* NONE		:不跳转
 * @author Dell
 *
 */
public class Demo02 implements Action {
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}
}
  • Action类继承ActionSupport类(常用)
public class Demo03 extends ActionSupport {
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

}

Action的访问

  • 通过method设置
<package name="demo03" extends="struts-default" namespace="/">
			<action name="userFind" class="com.itheima.struts.demo03.UserAction" method="find"></action>
			<action name="userUpdate" class="com.itheima.struts.demo03.UserAction" method="update"></action>
			<action name="userDelete" class="com.itheima.struts.demo03.UserAction" method="delete"></action>
		</package>
  • 通过通配符的方式进行配置(常用)
<package name="demo03" extends="struts-default" namespace="/">
			<action name="user_*" class="com.itheima.struts.demo03.UserAction" method="{1}"></action>
		</package>
  • 动态方式访问
<package name="demo03" extends="struts-default" namespace="/">
			<action name="*_*" class="com.itheima.struts.demo03.{1}" method="{2}"></action>
		</package>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值