struts 总结

1. 概念

struts在javaee三层架构扮演的角色
  • 2.struts使用优势有哪些
    • 自动封装参数
    • 参数校验
    • 结果的处理(重定向、转发)
    • 国际化 i18n
    • 表单的重复提交
    • 显示等待页面

3.struts的历史, struts2和struts1 没有关系, 前身是webwork 框架

4.导包  地址 G:\jarPackage\SSH\struts-2.3.37\apps\Blank.jar\WEB-INF\lib (需要解压APP中 的blank.jar包)

5.书写action 类

public class HelloAction{
public String hello (){
 System.out.println("hello world");
 return "success";
}
}

 

6.书写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>
    <!--  package 将action进行封装,
    		name属性 :给包起一个名字 
    		namespace: 给action的访问路径定义一个命名空间
    		extends:继承一个包 固定的格式,基本上不会变化的
    		abstract:包是否是抽象的 标示性属性,-->
    	<package name="hello" namespace="/hello" extends="struts-default">
    	<!-- action属性 
    	name:属性决定了action的访问资源名
    	class属性:action的完整类名
    	method: action中的那个方法来处理请求 -->
    		<action name="HelloAction" class="cn.itcase.web.action.HelloAction"
    			method="hello">
    			<!-- result属性: 结果配置
    			name属性:标识结果的名称与action中的方法的返回值相对应
    			type: 指定调用哪一个result类来处理结果 默认使用转发
    			标签体: 填写页面的相对路径 -->
    			<result name="success"> index.jsp</result>
    			</action>
    
    	</package>
    
    </struts>

 

7.配置核心过滤器

<!--配置核心过滤器 -->
	<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>

8.struts访问流程& struts2架构

 

9.struts中常量的配置

方式1.从struts.xml 文件中

<constant name="" value="”> </constant>

方式2. src文件创建 struts.properties

struts.i18n.encoding =utf-8

方式三

在项目的web.xml中

<context-param> <param-name> struts.i18n.encoding</param-name> 

<param-value>utf_8</param-value5>

5,action中动态方法调用

1.配置常量的方式

<!--  配置动态方法是否开启常量 默认是关闭的 需要开启-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

2.使用通配符的方式

<action name="HelloAction_*" class="cn.itcase.web.action.HelloAction" method="{1}">

二。书写ACTION类的方式

1.创建一个类就完事了,不需要继承父类 也不需要实现任接口

2.实现一个接口action 里面有execute方法 提供了action方法的规范

action接口中预支了一些字符串,可以再放返回结果时使用,

3.继承ActionSupport 帮助我们实现了validateable  validationaware 等接口的实现 就不需要我们来实现了

三。结果集的处理方法 常用的四种方式

<!--转发  -->
			<result name="success" type="dispatcher"> index.jsp</result>
			<!--重定向  -->
			<result name="success" type="redirect"> index.jsp</result>
			<!--转发到action  -->
			<result name="success" type="chain">
			<param name="actionName"> demoAction</param>
			<param name="namespace">/</param>
			</result>
			<!--重定向到action  -->
			<result name="success">
			<param name="redirectAction">demoAction</param>
			<param name="namespace">/</param>
			</result>

四,访问servletAPI 的方式

1.原理。通过actionContext对象,就是一个map集合,里面封装了servlet的原生的api ,生命周期,每次请求都会创建一个一个actiontcontext对象,请求处理完actioncontext对象销毁

2.如何获得actioncontext对象,struts设计的是,将actioncontext对象创建好了之后,将actioncontext对象与当前线程进行绑定,只要从threadlocal 中获得即可,

访问方式一 通过actioncontext对象中获取

推荐方式 Actioncontext.getcontext ().put("name","requestTom");

ActionContext.getcontext.getSession().put("name","sessionTom");

actonContext.getContext.getApplictation();

actonContext.getContext.put();

访问方式二通过ServletAction Context 对象(不推荐使用)

访问方式三 通过接口的方式 ——Implements servletrequestaware 接口 

2.action的生命周期 

每次请求到来时都会创建一个新的action实例对象,action是线程安全的,可以使用成员变量接受参数

3. 属性驱动获得参数

2.对象驱动

3.模型驱动(推荐使用)

4.集合类型参数封装

1.list集合 map 集合也是一样的一个原理

list :<input type ="text" name ="list"/> </br>

list:<input type="text" name="list[3]></br>

private List<String> list;

五,ognl表达式

1.ognl 表达式 对象视图导航语言 ${user.addr.name} 这样的写法就是对象视图导航语言

ognl表达式不仅可以视图导航,支持el表达使更多的功能,

2.使用ognl表达式的准备工作

1.导包 在struts中已经包含了

2.代码准备ognl表达式

 

 

准备ognl表达式

 

语法

String name= (string ) Ognl.getValue("name",oc,oc.getRoot());

Integer age = (Integer ) Ognl.getValue(:age ,oc, oc,getRoot());

取出 context中对象的name属性

String name =(String) Ognl.getValue("#user1.name" oc, oc.getRoot());

赋值

Ognl.getValue("name=jerry " oc, oc,getRoot());

OGNL 表达式和struts3 结合

结合原理  valuestack 值栈 

valueStack中的两部分 compoundroot root ;

transient Map <string ,object> context;

Context 就是actioncontext 数据中心

3.struts与ognl表达式结合体现

1.参数接收

 

如何获得值栈对象,值栈对象和actoncontext对象是相互引用的

valuesStack vs= ActionContext.getContext().getValueStack();

vs.push(u);’

2.在配置文件中使用

 

六。自定义拦截器

1.第一种创建方式

 实现implements接口 

2.第二种创建方式

继承 extends AbstractInterceptor  帮助我们空实现了init和destrory方法 只需要实现interceptor方法即可

3.继承MethodFilterInterceptor 方法拦截器

invocation.invoke();放行 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值