struts2入门

一,概述

struts1是最早的一种基于MVC模式的应用框架;struts2是在struts1的基础上融合了xwork的功能.因此,可以说:struts2=struts1+xwork.struts本质上相当于是servlet,struts其实就是对servlet的封装,从而提高开发效率.管他三七二十一,先写一个Hello程序吧!

二,struts2之hello程序

0)去Apache官网下载struts2的zip包,本文使用的struts-2.3.4.1版本.

1)创建一个web项目,引入struts的相关jar包.解压刚刚下载的zip包,在lib目录下找到以下这几个核心的jar(如下图),导入web项目中.

1,2jar包:文件上传相关包

3jar包  :strutsjava.lang包的扩展

4jar包:struts的标签模板库jar文件

5jar包:struts对字节码的处理相关jar包

6jar包:Ognl表达式功能支持

最后两个分别是struts2核心功能包,Xwork核心包

需要注意的是,在struts2的lib目录里有很多个jar包,远不止这8个,直接全部导入是不科学的.如果自己不想找这8个常用jar,就去apps目录下的struts2-blank.war里面拷贝现成web示例里的jar包,需要解压struts2-blank.war哦.在里面的lib目录里有13个jar包,直接拷入自己的项目中即可.(多了五个,无所谓了).

2)在项目的web.xml中,引入struts的核心过滤器,配置几行代码就搞定了.(可参考前面说的struts2-blank.war里面的web.xml文件).

<!-- 引入struts2核心过滤器 -->
	<filter>
		<filter-name>struts2</filter-name>
	<!-- org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter -->
		<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>
3)开发action.
package com.bighuan.a_action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 开发action:处理请求,继承ActionSupport的叫做动作类.action类是用来替代servlet的.
 * action类中业务方法必须返回一个String,方法不能有参数,参考execute()方法
 * @author bighuan
 * 
 */
public class HelloAction extends ActionSupport {

	/**
	 * 处理请求
	 */
	@Override
	public String execute() throws Exception {
		System.out.println("访问到了action,正在处理请求ing");
		System.out.println("调用service处理请求");
		return "success";
	}
}
4)配置action,在src下新建一个struts.xml文件,其实也可以参考前面说的那个struts2-blank.war下的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>

	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="true" />

	<package name="default" namespace="/" extends="struts-default">


		<!-- 配置action:通过hello找到Action的全路径,然后通过相应类(HelloAction)找到相应类中的方法,通过返回值确定接下来是否跳转页面 -->
		<action name="hello" class="com.bighuan.a_action.HelloAction"
			method="execute">
			<!-- type默认就是dispatcher
                          跳转的结果类型
                dispatcher    转发,不指定默认为转发
                redirect       重定向
                redirectAction  重定向到action资源
                stream        (文件下载的时候用)
                       -->
			<result name="success" type="dispatcher">/success.jsp</result>
		</action>

	</package>


	<!-- Add packages here -->

</struts>
5)发布到tomcat,通过路径(http://localhost:8080/工程名/hello)访问就打印出了HelloAction中那个execute()方法里的两行内容,并且跳转到success.jsp页面.过程很简单,但写起来就很多东西了...所以略了,写博客主要是为了加深自己的印象...

三,struts2框架预先帮开发者实现的功能

1)请求数据自动封装(这功能好啊,以前在servlet封装数据好烦了)

2)文件上传的功能

3)对国际化功能的简化

4)数据校验功能

.....

还有好多

四,struts2的执行流程

服务器启动:
1) 加载项目web.xml
2.)创建Struts核心过滤器对象, 执行filter

-->init()
    struts-default.xml,   核心功能的初始化
    struts-plugin.xml,    struts相关插件
    struts.xml    用户编写的配置文件
访问:
3) 用户访问Action, 服务器根据访问路径名称,找对应的aciton配置, 创建action对象
4) 执行默认拦截器栈中定义的18个拦截器
5) 执行action的业务处理方法

五,struts-default.xml详解

目录:struts2-core-2.3.4.1.jar/ struts-default.xml
内容:
1) bean节点指定struts在运行的时候创建的对象类型
2)指定struts-default包  【用户写的package(struts.xml)一样要继承此包 】
package  struts-default  包中定义了:
    a,定义了所有的拦截器
    定义了32个拦截器!
    为了拦截器引用方便,可以通过定义栈的方式引用拦截器,此时如果引用了栈,栈中的拦截器都会被引用!
     defaultStack:默认的栈,其中定义默认要执行的18个拦截器!
    b. 默认执行的拦截器栈、默认执行的action
 <default-interceptor-ref name="defaultStack"/>
 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
<interceptor
name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
<interceptor
name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
3)拦截器
    拦截器功能与servlet中的过滤器功能类似。
    区别:
        共同点: 都拦截资源!
        区别:
            过滤器,拦截器所有资源都可以;  (/index.jsp/servlet/img/css/js)
            拦截器,只拦截action请求。
            拦截器是struts的概念,只能在struts中用。
            过滤器是servlet的概念,可以在struts项目、servlet项目用。
4)拦截器什么时候执行? (访问/启动)  先执行action类创建,先执行拦截器?
 a, 用户访问时候按顺序执行18个拦截器;
 b, 先执行Action类的创建,再执行拦截器; 最后拦截器执行完,再执行业务方法

六,总结

希望自己坚持下去,好好搞技术!






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值