之前网上商城的时候我用的是SSH框架。在那里,我们第一次接触到了struts2,下面就让我们来系统学习一下。
对于框架的概念一直没能理解的很透彻。框架就是一个模板,框架的作用是为了替程序员完成一部分代码,从而提高我们的开发效率。structs2是又structs1和webwork整合而来,是apache旗下一个免费,开源的框架。
下面我们说一下struts2项目的搭建步骤。
1.首先要新建一个web项目。
2.导入jar包:把所需的jar包导入到webRoot下的lib文件下。
3.在web.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> *.action
</filter-mapping>
<?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>
</struts>
至此struts2环境搭建完成。
下面我们来实习一个struts2的第一个小例子。
5.在src下创建一个Action类,比如HelloAction类吧。
package cn.tgb.action;
public class HelloAction {
public String execute(){
System.out.println("hello struts2");
return "success";
}
}
这里需要注意的是struts2默认执行的是execute方法,他是public并且返回String的。在servlet中,默认执行的service方法,并且有参数HttpServletRequest和HttpServletResponse,并且无返回值。
6.在配置文件中配置Action类——struts.xml。
<!-- extends必须写,直接或者间接继承struts-default ,name自定义-->
<package name="hello" extends="struts-default" >
<!-- name是请求名称,不要写/;class对呀action完全限定名=包名+类名 -->
<action name="hello" class="cn.tgb.action.HelloAction">
<!-- result是结果集 name和对应action中的方法的返回值匹配,默认是success -->
<result name="success">/index.jsp</result>
</action>
</package>
这样struts2的一个小例子就编写完成了。
由于有网上商城的基础,所以对struts2中的一些配置理解的比较快。现在对于struts2的理解就是封装了servlet的一些方法,使我们在使用属性时不用再去一一去取。struts2只要属性名称对应,就可以传递相应的值。当然,这只是现阶段的理解,欢迎大家斧正。
对于struts2的执行流程,个人理解是这样的:当用户提交一个请求,服务器(可以是Tomcat或者Jboss之类)接受,并且交个struts2的核心过滤器来进行处理,struts2的过滤器调用struts2的一系列处理器来进行处理,(如解析struts.xml配置文件,和用户提交的请求对比,如果找不到返回404,如果找到进行下一步处理。)直到调用对应的Action类中的execute方法,执行完后再进行一系列处理到核心过滤器。由核心过滤器返回给服务器,服务器对浏览器进行相应的响应。
不当之处,欢迎大家指导!