struts2(一)之初识struts2

时间:2023-02-01 09:34:06

前言

  我们都知道struts2是一个框架,那什么是框架呢?很多人其实不太明白,其实框架就是一个半成品,别人将一些功能已经写好了,我们只需要拿来用即可,像我们之前

  使用的dbutils框架,操作数据,只需要两行代码,不用像一开始一样,老老实实的写一大堆代码,这就是开发框架的意义所在。简化开发(个人对框架认识的理解,其他

  还有在框架上加自己的代码这些就不说了,肯定还有别的很多功能,这只是我最好理解的一种方式)。

  框架的定义和作用:

    把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面。
    特点:封装了很多细节,程序员在使用的时候会非常简单。

  Struts2就是一个web层框架,并且是使用MVC设计模式实现的的一个框架,之前使用的是Serlvet+JSP来开发web项目,现在用Struts2框架来替代他,那Struts2到底有

  哪些优点呢?

    请求    -----------  Servlet      --------------  JSP    serlvet+JSP

    请求    -----------      Action   --------------  JSP    Struts

一、struts2概述

1.1、简介

  百度上说的是:

    struts2(一)之初识struts2

    Struts2是Apache发行的MVC开源框架。注意:它只是表现层(MVC)框架。

    struts2(一)之初识struts2

1.2、来历

  Struts1:也是apache开发的一套mvc的开源框架。在2005年之前非常流行。
      弊端:Struts1的核心控制器就是一个Servlet。随着使用者的增多,弊端开始出现。
  Struts2:在long long ago,有一个设计超前的框架XWork,后来推出了XWork1和WebWork2。Struts2就是apache和OpenSymphony组织合并开发出来。
      里面包含了WebWork2的核心及Struts的一些特性和功能。除此之外,和Struts1没有任何关系了。

二、struts2架构分析

  首先了解前,必须先要知道Struts2的架构图,知道是如何工作的,做了哪些事情,可以不必那么详细的知道每一块具体的细节,先让我们自己有个大概的了解,

  这样我们就更容易去接受它,使用它。

  struts2(一)之初识struts2

  第一步:请求action,那么就会经过StrutsPrepareAndExecuteFilter,这里会做两件事情,就是下面的两步

  第二步:通过ActionMapping将请求中的各种数据封装起来,拿到请求中的各种参数数据,比如我们的action的名称DemoAction

  第三步:给自己找一个代理对象ActionProxy,来帮助我们处理事情。注意,这个ActionProxy实际上不做任何实事的,而是指挥别人做。

  第四步:ActionProxy叫ConfigManager获取struts.xml中的各种配置信息,其中struts.xml就有action的类全限定类名等信息,这样就可以通过action的名字找到其位置了。

  第五步:有了actionMapping获取的请求数据和ConfigManager获取的struts.xml中的数据,就叫ActionInvacation来查找对应的action了

  第六步:在找到action之前会经过一系列的拦截器,struts内部默认实现的。找到action后,就相当于我们的servlet,在其中执行一些业务代码,然后跳转到目标页面,

      响应回去。struts的整个过程即结束了。

  就是这么简单,struts2的整个执行过程就这样,而现在我们要写一个struts2的hello world的话,根据struts2的架构图,我们需要配置2个东西,

  第一个最关键的,在web.xml中配置strutsPrepareAndExecuteFilter即过滤器,配置了该过滤器,请求才会走struts2框架,

  第二个,struts.xml文件,其中应该有的内容是通过action的名字就能够找到其位置在哪里,稍微会详细讲解。

三、搭建struts2环境

  我们只需要三步就可以完成:导入jar包、在web.xml中配置过滤器、配置struts.xml。

3.1、导入jar包

  1)下载struts2jar包

    http://struts.apache.org(struts-2.3.15.3)

  2)开发包目录结构

    struts2(一)之初识struts2

  3)需要的jar包

    这里注意一点,lib下面有100多个jar包,并不需要导入这么多,我们在apps(案例)中找jar包即可,apps-blank.war是最简单的案例,

    我们把其后缀名改为zip,然后解压,找到其中的lib目录下的jar包复制就行了。

    struts2(一)之初识struts2

    拷贝jar包到classpath中(也就是WEN-INF下面的lib包)

    struts2(一)之初识struts2

3.2、在web.xml中配置过滤器

  配置的位置:web.xml中

  配置的是什么:Struts已经写好的过滤器

  struts2(一)之初识struts2

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<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>
</web-app>

web.xml

3.3、配置struts.xml

  在src目录下创建一个默认名称为struts.xml的配置文件 

<?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>

  注意:文件名的大小写、创建的位置、该文件名允许被修改但是我们一般不修改它。

  这是我们可以验证是否搭建成功:

    部署应用,启动tomcat,不报错表示配置成功

四、写一个demo

  1)创建一个jsp文件(index.jsp)

  struts2(一)之初识struts2

  2)在struts.xml中配置

  struts2(一)之初识struts2

  配置信息详解:

  struts2(一)之初识struts2

  3)创建动作类和动作方法

  struts2(一)之初识struts2

  4)结果视图

  success.jsp

  struts2(一)之初识struts2

  5)测试

    struts2(一)之初识struts2

    点击以.action结尾:

    struts2(一)之初识struts2

    点击不以.action结尾:

    struts2(一)之初识struts2

问题:关于struts.xml没有提示的问题

  原因:没有找到相应的dtd约束文件

  解决办法:

    1.上网

    2.不能上网

    找到struts jar包中的struts-2.3.dtd文件

    struts2(一)之初识struts2

    在项目中与lib包同级目录下创建一个dtd文件夹把jar包放进去

    在myeclipse中配置

    struts2(一)之初识struts2

五、测试例子执行过程分析

  struts2(一)之初识struts2

  详细的过程:

  struts2(一)之初识struts2

六、struts的配置文件

  加载时机:当应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。

6.1、配置文件加载顺序

  struts2(一)之初识struts2

  注意:  

    1)Struts2提供了两种配置的方式。一种是key=value的方式,即使用.properties文件。另一种是xml文件配置。我们推荐使用xml文件(它能描述层级关系)。

    2)当多个配置文件中,有相同的参数,后面的会把前面的值给覆盖了。

6.2、struts-default.xml文件

  这里解释一下struts.xml中的package继承问题。上面继承了一个struts-default的包,想要查看它中的内容很简单,在我们加入的struts2-core-2.3.15.1.jar包

  找到struts-default.xml,在该配置文件中就有package为struts-default的内容。

  struts2(一)之初识struts2

  从名字上看,就应该知道该是struts的一个默认的配置文件,而我们前面编写的一个struts.xml中应该会使用该默认配置文件中的内容,其中的格式跟我们写的struts.xml是一样的。

  分两大部分:

    第一部分 全是bean开头的配置,暂时不管他是干嘛用的,后面会学习,而我们的重点是第二部分

    第二部分 看到了熟悉的内容,package,并且该package的名字为struts-default。这就是我们需要查找的包,其中的内容包括了三个部分:

      1)<result-types></result-types>看到这里我们就明白为什么我们的结果中跳转页面的方式默认是dispatcher(转发),因为在继承的struts-default包中将其设置成了默认的,

       还有很多其他的type可选择,比如其中的redirect,就是重定向,比如redirectAction,从一个action跳到另一个action中执行。比如stream,文件上传时用的,等等这些等

         后面会详细讲到。有个大概映像即可。

      2)<interceptors></interceptors>,这里是一系列的过滤器,就是我们讲的架构图中的那一系列拦截器,就是在这里给配置的。

      3)最后一个是两个零碎的配置

        struts2(一)之初识struts2

        321行:配置说默认的一个拦截器为defaultStack,这是一个拦截器栈,其内容在第二部分中。

        323行:这里说的class为在我们action中的class,如果不写则为com.opensymphony.xwork2.ActionSupport。ActionSupport这个类就我们下面要讲解的action继承它来当

            action,那时候再与普通类当action有什么区别。

    总结:struts-default.xml的功能就是将一些已经有的功能加入到配置文件中,然后让我们编写的struts.xml继承其中的包,那么我们就具备了这些功能,不用自己手动编写了,如果想

      在上面添加功能,在编写即可。到这里为止应该就解决了为什么要继承struts-default这个包了把。

6.3、default.properties配置文件

  default.properties,这是一个常量的配置文件。其中放的都是常量。

  struts2(一)之初识struts2

  常量定义在了default.properties配置文件中,体现形式都是key=value。所有的struts2应用都会用到这些常量。

  常用的常量有 :

  struts2(一)之初识struts2

6.3、覆盖常量的三种方式

  1)在struts.xml中覆盖常量

  struts2(一)之初识struts2

  注意:与package是同级目录。

  2)创建struts.properties文件覆盖  

  struts2(一)之初识struts2

  3)在web.xml文件中配置过滤器参数

  struts2(一)之初识struts2

喜欢就推荐哦!

struts2(一)之初识struts2的更多相关文章

  1. Struts2基础学习&lpar;一&rpar;&mdash&semi;初识Struts2

      目录 一.什么是Struts2 二.搭建Struts2的开发环境 三.Struts2的配置文件 四.MVC模式 一.什么是Struts2      Struts2是一个非常优秀的MVC框架,由传统 ...

  2. &lbrack;原创&rsqb;java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 第3章 Struts2框架--1、Struts2环境搭建

    第3章 Struts2框架--1.Struts2环境搭建 搭建步骤: 1.从下载http://struts.apache.org 没找到Struts2.3.16版,就下载了2.3.29 2.拷贝后解压 ...

  4. struts2讲义----建立一个struts2工程

    建立一个Struts2 工程 Ø 1在MyEclipse中新建web工程 Ø 2在struts-2.2.1.1-all\struts-2.2.1.1解压struts2-blank.war( 最基础的示 ...

  5. Struts2学习第一天——struts2基本流程与配置

    struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实 ...

  6. &lbrack;原创&rsqb;K8 Struts2 Exp 20170310 S2-045&lpar;Struts2综合漏洞利用工具&rpar;

    工具: K8 Struts2 Exploit组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2014/7/31 10:24 ...

  7. Struts2学习第一天--Struts2的概述、Struts2的入门、Struts2常见的配置、Struts2的Action的编写

    action的name要与访问路径对应.hello.action. 加到tomcat启动 访问:http://localhost:8080/struts2-1/demo1/demo1.jsp 改为su ...

  8. Struts2 第四讲 -- Struts2的基本配置

    5.struts2的基本配置 5.1 struts2的访问连接url 在struts1中,通过<action path=“/primer/helloWorldAction.action”> ...

  9. Struts2框架学习&lpar;一&rpar;——Struts2的概念及搭建

    一.Struts2的概念 使用优势:1)自动封装参数 2)参数校验 3)结果的处理(转发|重定向) 4)国际化 5)显示等待页面 6)防止表单重复提交 Struts2具有更加先进的架构以及思想 Str ...

  10. 初识Struts2

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

随机推荐

  1. 如何书写高质量的jQuery代码(转)

    想必大家对于jQuery这个最流行的javascript类库都不陌 生,而且只要是前端开发人员肯定或多或少的使用或者接触过,在今天的这篇文章中,参考了一些资料及实际使用效率,将介绍一些书写高质量jQu ...

  2. &lbrack;每日一题&rsqb; 11gOCP 1z0-053 &colon;2013-09-30 ASMCMD&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;&period;8

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12206095 正确答案:BCD 为了使ASM文件管理更简单,Oracle提供了一个命令实用 ...

  3. 每天收获一点点------Hadoop概述

    一.Hadoop来历 Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明了倒排索引算法,通过加入了Map ...

  4. PHP如何防止XSS攻击

    PHP防止XSS跨站脚本攻击的方法:是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 . 在使用htmlspecialchars()函数的时候注意第二个参数, 直接 ...

  5. UNIX网络编程——并发服务器(TCP)

    在迭代服务器中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现. 网络服务器通常用fork来同时 ...

  6. &lbrack;FPGA&rsqb; 1、Artix-7 35T Arty FPGA 评估套件学习 &plus; SiFive risc-v 指令集芯片验证

    目录 1.简介 2.深入 3.DEMO 4.SiFive基于risc-v指令集的芯片验证 LINKS 时间 作者 版本 备注 2018-10-09 08:38 beautifulzzzz v1.0 到 ...

  7. idea注册码到期,破解idea

    http://idea.lanyus.com/    

  8. 鼠标hover图片时遮罩层匀速上升显示内容top、定位

    1.html <div class="div1">   <div class="div11">   <p >Dolor nu ...

  9. cut命令详解

    1.简介:cut:以某种方式按照文件的行进行分割 2.参数列表: -b:仅显示行中指定直接范围的内容: -c:仅显示行中指定范围的字符: -d:指定字段的分隔符,默认的字段分隔符为“TAB”: -f: ...

  10. 43&period; Multiply Strings 字符串表示的大数乘法

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...