一、什么是框架?
来源于建筑行业,如果建筑一个茅草屋,不需要框架,如果建造一个几个亿的摩天大楼,就需要框架。
小系统用框架浪费人力,中大型系统用框架。
软件中的框架,是一种半成品。实现了一些基础功能的软件。
我们项目开发需要在框架的基础上进行,因为框架已经实现了一些功能,这样就可以提高开发效率!
二、struts2框架介绍
Struts1:是最早的一种基于mvc模式的框架。
Struts2:是在Struts1的基础上,融合了xwork的功能。
也可以说,Struts2 = struts1 + xwork。
Struts2框架预先实现了一些功能:
1. 请求数据自动封装
2. 文件上传的功能
3. 对国际化功能的简化
4. 数据效验功能
……………….
三、Struts2开发流程
版本: 2.3.x
3.1引入jar文件
1、commons-fileupload-1.2.2.jar【文件上传相关包】
2、commons-io-2.0.1.jar【处理IO的一些工具类包】
3、struts2-core-2.3.4.1.jar【struts2核心功能包】
4、xwork-core-2.3.4.1.jar【Xwork核心包】
5、ognl-3.0.5.jar【Ognl表达式功能支持表】
6、commons-lang3-3.1.jar【struts对java.lang包的扩展,是struts内部的实现,和我们开发没有关系,但必须要】
7、freemarker-2.3.19.jar【struts的标签模板库jar文件】
8、javassist-3.11.0.GA.jar【struts对字节码的处理相关jar,我们一般情况下用JDK自带的字节码处理,但Struts自带了,在新版本里才提供的,2.1就不需要】
3.2配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><display-name>hellostruts2</display-name><!-- 其他拦截器,其他拦截器要放在struts上面,要不然无效,因为struts拦截了所有请求 --><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
web.xml的作用见:http://blog.csdn.net/zengmingen/article/details/50534678
Tomcat启动-à 加载自身web.xml---à加载所有项目的web.xml,通过在项目的web.xml中引入过滤器,
-àStruts的核心功能的初始化,通过过滤器完成 à filter 【init/启动执行,doFilter/访问执行,destroy】
struts2-core-2.3.4.1.jar 中的StrutsPrepareAndExecuteFilter 即为核心过滤器
注意:使用的struts的版本不同,核心过滤器类是不一样的!
3.3开发Action
1.action类,也叫做动作类; 一般继承ActionSupport类,即处理请求的类(struts中的action类取代之前的servlet)
2.action中的业务方法,处理具体的请求
-à必须返回String
à方法不能有参数
-à异常可有可无
public class HelloAction extends ActionSupport {
// 处理请求
public String execute() throws Exception {}
}
3.4配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><!--package 定义一个包,包作用:管理action,通常一个业务模块用一个包name包名不能重复 extends 当前包继承自哪个包abstract 表示当前包是否为抽象包,抽象包不能有action的定义,否则运行时报错。abstract=true:只有当前包被其他包继承时才使用。namespace 默认"/",是访问路径的一部分。action 配置请求路径与Action类的映射关系name 请求路径名称class 请求处理的action类的全名method 请求处理方法resultname action处理方式返回值type 跳转的结果类型标签体中指定跳转的页面--><package name="xxxx" extends="struts-default"><action name="hello" class="com.zengmg.strtus.HelloAction" method="execute"><result name="success">/success.jsp</result></action></package></struts>
续