Struts2入门1
Struts2的概述:
Struts2是应用在Javaee三层结构中的web层。Struts2是在Struts1和webwork的基础之上发展的全新的框架。在没有使用Struts2之前,进行web层的操作主要是通过Servlrt类来进行实现,而每一个功能对应一个Servlet。这种方式实现有一个不好的地方,就是如果在你的功能有很多的时候,那么对应的Servlet也相对会很多,这样对程序的后期维护是很不好的。在Javaee阶段,传智播客老师教了一种解决的方案就是对HttpServlet进行再次的封装为一个BaseServlet(通过反射来进行封装:主要是通过在页面传参method=...,在BaseServlet中获取到method的参数,在通过反射来调用对应的方法,而我们只需要在写的Servlet中继承封装好的BaseServlet的话,就可以在一个Servlet中写多个方法),这种方式实现相对于一个功能一个Servlet而言就稍微的高端一点,同样这种方式还是有不足的地方,例如,在每次写Servlet的时候,均需要继承自封装好的BaseServlet。这时候,有一个更加好的方式实现,就是Struts2框架。下面通过图片描述Strut2和Servlet的区别:
Struts2:
Servlet:
Struts2的目录结构:
使用Struts2的步骤:
1. 创建Web项目,导入jar包
对于Struts2的jar包,并不是将lib目录下的所有jar包导入,可以到apps文件夹下找到对应的示例程序,选择这个即可,用压缩软件打开,将其中的jar包复制到web项目下。如下图:
2. 创建Action
在以前的Servlet中,每次访问Servlet时候,均会执行service()方法,而在使用Struts2的时候,创建Action类,每次访问的Action的时候,执行的是Struts2底层封装的execute()方法。
3. 配置Action类的访问路径,也就是Struts的核心配置文件。
在以前的Servlet中,如果要找到对应的Servlet,需要对Servlet进行路径的配置。同样对于Struts2的Action类,也需要进行Action的配置。Struts2的配置需要在Struts2的核心配置文件中进行配置,因此首先需要创建Struts2的核心配置文件:,对于这个struts2的核心配置文件和Hibernate的核心配置文件一样,有两个要求:第一要求struts2的核心配置文件的位置,必须在src根目录下,第二要求struts2的配置文件的文件名必须为struts.xml。如下图:
由于一般的xml文件,均具有约束文件,所以在创建struts.xml文件的时候,还需要给struts.xml文件引入约束。struts的详细配置,在下面介绍;引入约束如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
4. 配置过滤器
在此博文开篇的部分图中,看到,对于Struts2的执行流程是必须先经过过滤器的。因此要使Struts2正确的运行,那么还需要在web.xml文件中配置Struts2的过滤器,此过滤器的配置,可以在Struts2提供的示例程序中找到。具体配置代码如下(只需要将下面的配置代码,放到项目的web.xml文件中即可):
<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>
StrutsPrepareAndExecuteFilter类是Struts2的过滤器类,他实现了Filter接口
Struts2的执行过程:
最新文章
- [译]AngularJS中DOM操作
- STL(multiset) UVA 11020 Efficient Solutions
- 用node开发repl应用
- easyUI框架之学习记录汇总
- Sqlcompletefree
- node.js http.get 和http.post 数据
- Android面试题整理【转载】
- Java:集合框架的工具类
- application/xml和text/xml的区别
- jQuery Mobile里xxx怎么用呀?(控件篇)
- java基础(二十)IO流(三)
- 浏览器的Storage做缓存需要注意的地方
- Gridview 多重表头 (一)
- <;EditText />; This text field does not specify an inputType or a hint
- MATLAB常用函数(不定时更新)
- python对象的多重继承
- 关于金蝶k3 wise供应生门户登陆界面屏蔽业务账套多余功能模块设置方法
- 时间选择器(timepicker)
- Zabbix Agent 源码编译安装
- SpringBoot注解验证参数