Struts2——笔记01

Struts2概述

  1. struts应用在JavaEE三层框架的web层
  2. Struts2是在Struts1和webwork基础上发展的全新框架
  3. web层的常见框架
    1)Struts2
    2)SpringMVC

Struts2准备以及简单入门

  1. jar包
    在这里插入图片描述
  2. 创建struts2核心配置文件(并且引入dtd约束)
    1)位置必须是在src目录下
    2)文件名必须是struts.xml
    3)dtd约束:<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
    在这里插入图片描述
  3. web.xml配置文件的设置
    1)配置过滤器
<!-- 
  	必须在web.xml中配置过滤器,否则无法访问(404)
   -->
  <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>
  1. 创建Action类(三种方式,此处仅采用第一种方式)
    1)Action类中必须有execute()方法(默认执行该方法)
package tqb.actiondemo;

public class ActionDemo1 {
	
	/**
	 * 默认执行的方法execute
	 * @return
	 */
	public String execute(){
		return "ok";
	}
}
  1. 在struts.xml配置文件中添加如下内容
<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	引入约束文件
	名称必须为struts.xml
	位置必须在src目录下
 -->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<!-- 
		name:按照自己的想法进行起名,不影响其它设置
		extends:只有继承了struts-default,action标签设置的内容才是对Action类的设置
		namespace:默认值是“/”,该属性可以不进行设置
	 -->
	<package name="actiondemo" extends="struts-default" namespace="/">
		<!--
			name:访问时需要在地址栏输入的名称
			class:设置Action类的全路径 
			method:执行其它的方法
		-->
		<action name="actiondemo1" class="tqb.actiondemo.ActionDemo1">
			<!--
				name:返回值返回过来的值
				/index.jsp:若返回值匹配成功要访问的路径 
				type:访问该路径的方式(转发、重定向),默认转发的方式
			-->
			<result name="ok">/index.jsp</result>
		</action>
	</package>
</struts>
  1. 访问action
    在这里插入图片描述

核心配置文件标签详解

  1. package标签
    1)name:对配置文件没有直接影响,当存在多个package时,用于区分不同的package
    2)extends:默认值struts-default,有继承了struts-default,action标签设置的内容才是对Action类的设置
    3)namespace:默认值“/”,可不写,默认存在该值,用于构成访问路径
  2. action标签
    1)name:地址栏访问时的名称
    2)class:当前Action类的全路径名称
    3)method:访问Action类中的其它方法
  3. result标签
    1)name:方法返回值
    2)type:访问路径下的文件(如jsp页面)或其它Action的方式(转发或重定向),有四个值:路径下的文件(dispatcher、redirect)、其它Action(chain、redirectAction)
  4. constant标签
    1)主要进行常量的设置
    2)最常设置的常量(编码的处理)
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
  1. include标签
    1)分模块开发时,不能让多人同时修改同一个struts2核心配置文件,必须在自己的配置文件中进行修改,最后再引入到核心配置文件中
    2)file:引入文件的路径
<include file="tqb/actiondemo/demo1.xml"></include>
  1. global-results标签
    1)结果页面配置(全局页面配置)
    2)应用场景:当多个action转向的地址相同时,可以采用全局页面配置
    3)局部页面配置指的就是action中存在result标签
    4)当局部页面配置和全局页面配置同时存在时,全局无效,局部有效
<package name="global-results" extends="struts-default" namespace="/">
		<global-results>
			<result name="success">/index.jsp</result>
		</global-results>
		
		<action name="actiondemo5" class="tqb.actiontest.ActionDemo5"></action>
		<action name="actiondemo6" class="tqb.actiontest.ActionDemo6"></action>
</package>

Action的三种创建方式

  1. 不继承不实现任何类和接口,类中拥有execute方法
package tqb.actiontest;

/**
 * 编写Action的三种方式(第一种) 
 * 不用实现或继承任何一个的接口或类
 * @author tqb
 *
 */
public class ActionDemo1 {
	public String execute() {
		return "success";
	}
}
  1. 实现Action接口,且实现execute方法
package tqb.actiontest;

/*
 * 导包com.opensymphony.xwork2.Action
 */
import com.opensymphony.xwork2.Action;

/**
 * 编写Action的三种方式(第二种)
 * 实现Action接口
 * @author tqb
 *
 */
public class ActionDemo2 implements Action {

	@Override
	public String execute() throws Exception {
		/*
		 * 返回值的三种方式
		 * Action接口的常量
		 * public static final java.lang.String SUCCESS = "success";
		 * 返回none实质上是不返回任何值,即返回参数类型为void
		 * NONE = "none";
		 * ERROR = "error";
		 * INPUT = "input";
		 * LOGIN = "login";
		 */
//		return "success";
//		return SUCCESS;
		return Action.SUCCESS;
	}
}
  1. 继承ActionSupport类
package tqb.actiontest;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 编写Action的三种方式(第三种)常用
 * 继承ActionSupport(ActionSupport实质上实现了Action接口)
 * @author tqb
 *
 */
public class ActionDemo3 extends ActionSupport {
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}

Action的访问方法

示例:Action类

package tqb.actiontest;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class ActionDemo4 extends ActionSupport {

	private static final long serialVersionUID = 1L;

	public String update(){
		System.out.println("update...");
		return Action.NONE;
	}
	
	public String add(){
		System.out.println("add...");
		return Action.NONE;
	}
}
  1. 常规方法通过method属性进行访问
<!-- 访问action的三种方式(第一种) -->
	 <package name="demo" extends="struts-default">
		<!--
			无返回值,所以无result标签
		-->
		<action name="addAction" class="tqb.actiontest.ActionDemo4" method="add"></action>
		<action name="updateAction" class="tqb.actiontest.ActionDemo4" method="update"></action>
	
	</package>
  1. 使用通配符进行访问
<!-- 访问action的三种方式(第二种常用) -->
	<package name="demo" extends="struts-default">
		<!--
			采用占位符的方式进行配置
			*表示可以匹配任何内容
			{1}表示第一个位置
		-->
		<action name="demo_*" class="tqb.actiontest.ActionDemo4" method="{1}"></action>
	</package>

在这里插入图片描述
3. 动态方法访问(了解)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值