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的执行过程:

Struts2入门1的更多相关文章

  1. Struts2 入门

    一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...

  2. Struts2入门3 深入学习

    Struts2入门3 深入学习 处理结果和异常 前言: Struts学习的差不多了,还有最后的一点就收官了就是结果处理和异常处理.前面学习Struts主要围绕就是Action以及struts.xml配 ...

  3. Struts2入门2 Struts2深入

    Struts2入门2 Struts2深入 链接: http://pan.baidu.com/s/1rdCDh 密码: sm5h 前言: 前面学习那一节,搞得我是在是太痛苦了.因为在Web项目中确实不知 ...

  4. Struts2入门1 Struts2基础知识

    Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...

  5. struts2入门程序

    struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...

  6. struts2框架(1)---struts2入门

    struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...

  7. [java]struts2入门

    摘要 本文是struts2入门,配置教程.如何在IntelJ Idea中进行手动配置.在使用idea新建struts2web项目的时候,在下载jar包的过程中,下载失败,没办法就直接手动进行下载jar ...

  8. ---web模型 --mvc和模型--struts2 入门

    关于web模型: 早期的web 应用主要是静态页丽的浏览〈如新闻的制监),随着Internet的发展,web应用也变得越来越复杂,不仅要 和数据库进行交互 ,还要和用户进行交互,由此衍生了各种服务器端 ...

  9. Struts2入门示例(Myeclipse)

    1.新建Web项目在lib导入struts-2.3.37核心基础jar包 2.在WebRoot新建2个JSP demo1.jsp <%@ page language="java&quo ...

  10. Struts2入门(六)——国际化

    一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...

随机推荐

  1. MapReduce单机提交(待稿)

    MR 提交方式源码 提交方式: 1,开发-> jar -> 上传到集群中的某一个节点 -> hadoop jar ooxx.jar ooxx in out 2,嵌入[linux,wi ...

  2. Composer\Downloader\TransportException ... Failed to enable crypto,failed to open stream: operation failed

    failed to open stream: operation failed 错误详细信息: [Composer\Downloader\TransportException] The "h ...

  3. Centos 学习之路:基础(1)

    冯·诺伊曼计算机模型: 采用二进制数表示程序和数据: 能存储程序和数据,并能自动控制程序的执行: 具备运算器.控制器.存储器.输入设备和输出设备5个基本部分. CPU:是控制器及运算器 CPU的架构类 ...

  4. centos .7x service iptables save 错误解决方案

    保存转发规则的时候,发现service iptables save 无效,而且报错[root@localhost bin]# service iptables saveThe service comm ...

  5. Django【第26篇】:中介模型以及优化查询以及CBV模式

    中介模型以及优化查询以及CBV模式 一.中介模型:多对多添加的时候用到中介模型 自己创建的第三张表就属于是中介模型 class Article(models.Model): ''' 文章表 ''' t ...

  6. Django【第21篇】:Ajax之FormData

    ajax补充--------FormData等... 一.回顾上节知识点 1.什么是json字符串? 轻量级的数据交换格式 2.定时器:关于setTimeout setTimeout(foo,3000 ...

  7. Django【第8篇】:Django之查询知识点总结

    关于查询知识点总结 models.Book.objects.filter(**kwargs): querySet [obj1,obj2]models.Book.objects.filter(**kwa ...

  8. note 2019.12.16

    1.无序 HTML 列表: <ul> <li>Coffee</li> <li>Tea</li> <li>Milk</li& ...

  9. 【leetcode】1147. Longest Chunked Palindrome Decomposition

    题目如下: Return the largest possible k such that there exists a_1, a_2, ..., a_k such that: Each a_i is ...

  10. 数据结构--排序--快排and冒泡(python)

    听说大厂面试,限时两分钟写出来快排... 闲着没事,写了一下... def Partition(L,low,high): pivotkey = L[low] while low<high: wh ...