在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处?
设计目标
Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。
技术优势
Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The JavaServlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java语言进行程序设计。
二是提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。
因为struts2有这样目标,并且有这样的优势,所以,这是我们学习struts2的理由,下面,我们在深入剖析一下struts的工作原理。
工作原理
Suruts2的工作原理可以用下面这张图来描述,下面我们分步骤介绍一下每一步的核心内容
看到上面的解释,如果有困惑,先不用着急,我们先做一个实例,通过实例来理解上面的解释,我想这是对于初学者最佳的学习路线,好了,下面我就带领大家一到进入Struts2的世界。
所谓工欲善其事必先利其器,我们需要先把Struts2的配置jar文件下载好,以便接下来的开发使用,进入Struts官网,下载你需要的Struts版本,这里我们用到的是struts-2.3.16.1,下载好Struts版本,解压,关于jar包的管理,个人建议,大家将我们经常使用的jar文件,统一分类保存在一个位置,这样方便我们后续进行jar的引用,我们知道eclipse为我提供的有一个User libraries,我们可以添加自己的libraries来管理我们的jar文件。
下载好我们的Struts,下面我们需要下载一个Tomcat服务器,用来部署我们的Struts项目,这里需要说明的时,安装Tomcat之前必须安装JAVA jdk,否则将会出现安装不成功提示,还有一点需要说明的是,Tomcat这里建议大家安装解压版本,方便我们的接下来myEclipse的集成,做好这些准备工作,下面我们就可以开始我们第一个Struts2项目开发了。
打开我们的myEclipse,将我们刚刚安装好的Tomcat服务器集成上,点击myEclipse上方的Window--》preferences:
配置好Tomcat,下面创建一个Helloword工程,将我们的jar文件导入,这里教大家一个小技巧,这样以后我们再导入jar文件时就会方便很多,具体操作如下:
导入jar文件后,我们需要配置一些我们的Struts2环境,打开我们的工程WebRoot下的WEB-INF,找到web.xml,添加Struts2的基本配置信息:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
配置好我们的web.xml,下面添加我们的Struts.xml文件,这个文件如何编写呢?答案很简单,打开我们的Struts解压文件,找到apps下的struts2-blank,解压该文件,解压后找到struts2-blank\WEB-INF\classes下的struts.xml,将这个文件拷贝到我们的工程src目录下,到这里关于Struts开发环境的配置基本完成,下面我们就一起编写一个简单的Helloword,开启我们的Struts2学习之旅。
我们的Action文件:
public class Helloword { public String helloword(){ return "success"; } }
我们的Struts配置文件:
<?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">--> <!-- 默认访问文件 --> <!-- <default-action-ref name="index" />--> <!-- 出错处理文件 --> <!-- <global-results>--> <!-- <result name="error">/error.jsp</result>--> <!-- </global-results>--> <!-- 错误类型 --> <!-- <global-exception-mappings>--> <!-- <exception-mapping exception="java.lang.Exception" result="error"/>--> <!-- </global-exception-mappings>--> <!-- 访问控制 --> <!-- <action name="index">--> <!-- <result type="redirectAction">--> <!-- <param name="actionName">HelloWorld</param>--> <!-- <param name="namespace">/example</param>--> <!-- </result>--> <!-- </action>--> <!-- </package>--> <!-- <include file="example.xml"/>--> <package name="default" namespace="/" extends="struts-default"> <action name="helloword" class="com.edu.action.Helloword" method="helloword"> <result name="success">/index.jsp</result> </action> </package> </struts>
最终的目录结构:
到这里我们的入坑篇就为大家介绍完毕,后续内容持续更新中。。。