struts基础

13 篇文章 0 订阅

struts

一.介绍

框架:就是半成品,框架已经完成一些通用功能。只需要实现与业务有关功能。

版本:struts-2.3.15.3-all

Struts的版本:

Struts1(已经淘汰) 

Struts2(我们要学) XWork

 

Struts => WEB层框架 
优势: 

1.不用侵入性比较高的Servlet.可以直接写普通java类作为处理请求逻辑的处理类.
这样更易于测试.
2.整合了一些之前需要手动来做的功能. 后台验证,表单回显,自动将表单参数封装,防止表单重复提交...
如果不够用我们还可以扩展框架的功能.

二.核心功能

l在Action的实现方面,可以是一个普通的POJO
POJO(PlainOld Java Objects)。
l线程模型方面,Action是一个请求对应一个实例(新new一个对象),没有线程安全方面的问题。
lServlet依赖方面,Action不再依赖于ServletAPI,有利于测试
实现TDD(Test-Driven Development,测试驱动开发)。
l封装请求参数,可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
l表达式语言方面,整合了OGNL
OGNL(ObjectGraph NavigationLanguage)对象图形导航语言。
l绑定值到视图技术,使用"ValueStack"技术。
l类型转换,使用OGNL进行转换,可以更方便的使用。
l数据校验,支持重写validate方法或者使用XWork的验证框架。
l基于SpringAOP思想的拦截器机制,更易扩展
 

三.目录结构

l  apps / struts2-blank.war 最简答环境

l  apps / struts2-showcase.war 常见案例

       war只要放在tomcat/webapps/ 将自动解压,并可以访问

四、jar包介绍

 

五、编写流程

(1)导入jar包

jar位置:struts-2.3.15.3\apps\struts2-blank\WEB-INF\lib

(2)Action类(请求处理类)

 

public class UserAction {
	
	public String execute(){
		return "success";
	}
}
 

 

(3)核心配置文件:struts.xml

 

位置:src下(实际是在WEB-INF/classes目录下)

名称:struts.xml

内容

       约束:

 

<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="day01" namespace="/hello" extends="struts-default">
		<action name="userAction" class="cn.hcx.a_hello.UserAction">
			<result name="success">/a_hello/success.jsp</result>
		</action>
	</package>
</struts>
 

 

(4)web.xml配置过滤器

核心过滤器名称:StrutsPrepareAndExecuteFilter

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

5()测试

第一个struts:hello world

1.导包

2.编写配置文件:struts.xml

 

<struts>
	<package name="action" namespace="/aa" extends="struts-default">
		<action name="HelloAction" class="action.HelloAction" method="execute">
			<result name="success" type="dispatcher">/index.jsp</result>	
		</action>
	</package>
</struts>

 

 

详解:

<!-- 
		http://localhost:8080/struts2-mini/HelloAction.action 一级
		http://localhost:8080/struts2-mini/aaa/HelloAction.action  二级
		
		name:单纯的给包起一个名字,不要与其他包名重复
		namespace: 为action访问加上一层或多层路径
		extends: 继承一个其他包,目的是引入其他包的配置
		abstract: 声明包是抽象的.意思就是让别的包来继承,声明为抽象的包中不能含有Action配置
	 --><!-- package下的action处理aaa这级目录下的action,即该包可以把action配置到某一级或多级目录下-->
	<package name="hello" namespace="/aaa" extends="struts-default" abstract="true/false" >
		<!-- 
			name: 为我们的action类加上一个标识,在访问时填入name名称.就可以找到action
			class: action完整类名
			method:处理的方法
		 -->
		<action name="HelloAction" class="cn.hcx.action.HelloAction" method="execute" >
			<!-- name:返回结果的标识,用于找到结果路径
				 type: 可以决定跳转到结果的方式=> 转发,重定向..... 方法的要求:公共的 返回值类型是String(匹配result元素) 无参
			 -->
			<result name="success" type="dispatcher" >/index.jsp</result> <!--访问helloaction时转发到index.jsp-->
		</action>
	</package>
	

 

3.编写action:

 

package cn.hcx.action;

public class HelloAction {

	public String execute(){
		System.out.println("hehe!");
		return "success";
	}

}

 

 

4.配置xml过滤器

 

  <!-- 重要: 配置struts2的核心过滤器 -->
  <!-- 注意: 配置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>

 

六、执行流程

 

 

七、基本配置

(1)配置文件介绍

 

1. default.properties :用于配置struts 常量。例如:编码

位置:struts2-core-2.3.15.3.jar!/org/apache/struts2/default.properties
一、struts.i18n.encoding=UTF-8  #处理国际化及解决中文乱码
1.编写action类:
package cn.hcx.b_constant;

import java.util.Arrays;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

public class Demo1Action {
	public String execute(){
		
		//获得参数,并在控制台打印
		//String name = ServletActionContext.getRequest().getParameter("name");
		
		String[] names = (String[]) ActionContext.getContext().getParameters().get("name");
		
		System.out.println(Arrays.toString(names));
		
		return "success";
	}
}
 
2.配置struts.xml:
<struts>	
	<!-- 常量的包 -->
	 <package name="constant" namespace="/constant" extends="struts-default">
	 	<action name="Demo1Action" class="constant.Demo1Action" method="execute">
	 		<result name="success" type="dispathcer">index.jsp</result>
	 	</action> 	
	 </package>
</struts>
 
demo1.jsp:
  <body>
    <form action="/struts2demo1/constant/Demo1Action.action" method="post">
    	<input type="text" name="name">
    	<input type="submit" value="go">    	
    </form>
  </body>
3.配置xml
 
改变struts.i18n.encoding=UTF-8 的编码:

在struts中添加配置:
<struts>	 
	 <!-- 解决表单提交乱码 -->
	<constant name="struts.i18n.encoding" value="GBK"></constant>	 
</struts>
二、
struts.multipart.parser=jakarta  文件上传使用的解析器
struts.multipart.saveDir=  临时文件的保存目录
struts.multipart.maxSize=2097152  
 
三、
struts.action.extension=action,,  使用的后缀名(action和空)
也是在struts.xml中修改:
<!-- 配置Action访问后缀 -->
	<constant name="struts.action.extension" value="do"></constant>

struts.serve.static.browserCache=true  设置浏览器是否需要缓存
struts.enable.DynamicMethodInvocation = true  动态方法调用
struts.devMode = false  是否打开struts的开发模式
<constant name="struts.devMode" value="false"></constant>

struts.ui.theme=xhtml  开发样式时使用struts标签自带样式
 

2. struts-default.xml:struts提供的默认核心配置文件,struts大部分功能都在此配置文件中。

struts2-core-2.3.15.3.jar!/struts-default.xml

3.struts-plugin.xml : struts插件核心配置文件,struts整合其他框架或工具。

 

 

* 以上三个文件,用户自己不进行修改。

4. struts.xml:用户自定义核心配置文件。

struts.xml 可以配置所有内容,包括:常量

       <constantname="struts.i18n.encoding"value="GBK"></constant> 配置编码

5.struts.properties : 用于自定义struts常量配置文件。一般不使用。

struts.i18n.encoding = GBK

6.web.xml :也可以配置struts常量

<!-- 通过初始化参数,配置常量 -->
		<init-param>
			<param-name>struts.i18n.encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>

@@@注意:如果配置常量,所有的配置文件存在优先级,编号越大优先级越高。

 

八、常见struts常量

 

1.用于配置项目编码

struts.i18n.encoding=UTF-8

2.struts整合spring需要配置,默认注释掉了【】

struts.objectFactory = spring

3.struts默认使用文件上传解析工具:apache-commons-fileupload

struts.multipart.parser=jakarta

       3.1临时文件保存位置

       struts.multipart.saveDir=

       3.2上传文件最大大小,默认值:2M,单位字节

       struts.multipart.maxSize

4.用于设置action请求路径扩展名。默认:action或空。多个值使用逗号分隔【】

struts.action.extension=action,,

       例如:/hello/userAction  或  /hello/userAction.action

5.确定是否使用动态方法调用。默认关闭的。

struts.enable.DynamicMethodInvocation =false

6. 设置开发模式,默认关闭。如果设置true:将提供更多提示信息,自动加载文件。【】

struts.devMode = false

       6.1自动重新加载国际化资源文件。

       struts.i18n.reload= true

       6.2自动冲洗加载xml配置文件。例如:struts.xml。但不会自动加载action类。

       struts.configuration.xml.reload= true

7. 设置struts标签主题,默认值:xhtml。取值:simple。【】

struts.ui.theme=xhtml

       开发中常用simple。xhtml存在默认布局,开发中布局使用美工提供页面,布局自定义。

<struts>
	<!-- 解决表单提交乱码 -->
	<constant name="struts.i18n.encoding" value="GBK"></constant>
	<!-- 配置Action访问后缀 -->
	<constant name="struts.action.extension" value="do"></constant>
	<!-- 打开开发者模式
			1.重新加载i18n配置
			2.重新加载struts.xml配置
			3.提供更多的错误提示.
	 -->
	<constant name="struts.devMode" value="false"></constant>
</struts>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值