一、Struts简介

  1.1  历史

  • 虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。

  1.2  struts与servlet的区别

      1.2.1  区别一:

  • servlet是单例,线程安全,每次请求都是由第一个请求到来后建立的那个servlet招呼,所以servlet一般没有成员变量;struts2是通过一个servlet负责招待每个到来的线程,并为这个线程向action工厂要一个全新的action,并把它们俩放进一个叫Threadlocal的容器中,直到线程断掉,这些东西才被gc这个收垃圾的收走。所以struts2是多线程的。

      1.2.2  区别二

  • servlet中的JSTL和EL对字符串和集合的操作支持很弱,而struts中的OGNL对集合的操作非常强大, 但是OGNL表达式的运行性能没有JSTL和EL高。

      1.2.2  区别三

  1.3  体系结构

  体系结构:1、Web浏览器请求一个资源。

  2、过滤器Dispatcher查找方法,确定适当的Action。

  3、拦截器自动对请求应用通用功能,如验证和文件上传操作。

  4、Action的execute方法通常用来存储和重新获得信息。

  5、结果被返回到浏览器。

  1.4  基于servlet的MVC设计模式与基于Struts框架的设计模式

二、初步使用Struts框架

  2.1  下载

进入apache的官方网:http://struts.apache.org/download.cgi#struts209 下载struts2的GA完整版,本文下载Struts 2.3.32为例。
下载完后,解压到本地磁盘,该文件夹包含如下文件结构:
l apps:该文件夹下包含了struts 2 的示例应用。
l docs:struts2的相关文档,包含struts2的快速入门、struts2的帮助文档及API文档等内容。
l j4:该文件夹下包含了让struts2支持JDK1.4的JAR文件。
l lib:该文件夹下包含了struts2框架的核心类库,以及struts2的第三方插件类库。
l src:该文件下包含了struts2框架的全部源代码。

  2.2  Struts框架的使用初步:

   A:Apache下载struts.2.1.8.rar包。
    B:进入apps目录,解压空工程。
    C:将struts2的基本jar包拷到工程的lib目录中。


    D:配置web.xml,加载struts2的过滤器

  we.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>

E:加载struts的配置文件struts.xml到src目录。

  • 在空工程的apps\WEB-INF\classes包里找到struts.xml,并复制这个xml文件到工程的src目录下。

F:编写Struts中的Action类。并且类中必须有返回值为String的execute方法。

ActionFirst.java:

package com;

public class ActionFirst {
/**
* 必须要有String的execute方法
* @return
*/
public String execute(){
System.out.println("将执行execute方法");
return "index";
}
}
  • exeucte是用于执行用户请求(Request)和响应用户(Response)的操作。

用于接收GET与POST的请求。

G:将Action类配置到struts.xml中。

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<action name="xx" class="com.ActionFirst">
<result name="index">/index.jsp</result>
</action>
</package> </struts>
  • 解析:当url为/xx 时,会执行com.ActionFirst,并调用该Action中的execute方法,该方法返回一个String值为index,再与《result》中的name属性相匹配,匹配到就跳转到/index.jsp页面。

H:页面访问Action,执行exceute方法,根据execute方法的返回值到Action到result中
    进行名称的匹配,从而请求转发或者重定向到页面。

结果:

(一)Struts2 基础的更多相关文章

  1. Struts2入门1 Struts2基础知识

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

  2. Struts2基础学习2

    Struts2基础学习2 项目结构,测试页面与实体类 <%@ page language="java" contentType="text/html; charse ...

  3. Struts2基础入门

    Struts2基础入门 创建一个web工程 0)导包并且创建一个核心配置文件 <?xml version="1.0" encoding="UTF-8"?& ...

  4. Struts2基础学习总结

    引用自:http://www.cnblogs.com/jbelial/archive/2012/05/10/2486886.html Struts 2是在WebWork2基础发展而来的. 注意:str ...

  5. 经典MVC框架技术-struts2基础知识

    Struts2框架简介 struts2框架是在struts1和webwork技术的基础上,进行合并的全新框架,struts2以Webwork为核心,采用拦截器来处理用户的请求,这样的设计使得业务逻辑控 ...

  6. Struts2框架学习第三章——Struts2基础

    本章要点 —  Struts 1框架的基本知识 — 使用Struts 1框架开发Web应用 —  WebWork框架的基本知识 — 使用WebWork框架开发Web应用 — 在Eclipse中整合To ...

  7. struts2 基础

    框架(frameWork):某一种应用的半成品 struts2: 表现层 处理与页面进行交互的相关功能  hibernate: 持久层 负责业务逻辑数据的持久化  spring: 业务层 负责复杂的业 ...

  8. struts2 基础学习

      Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts ...

  9. 2. Struts2 基础

    1. Struts2简介 Struts2是一个WEB端MVC框架.作为比较早的MVC 框架之一,Struts2在使用中还是比较多的.虽然个人感受没有SpringMVC还那么的好用 Struts2 官网 ...

随机推荐

  1. NLP 文本预处理

    1.不同类别文本量统计,类别不平衡差异 2.文本长度统计 3.文本处理,比如文本语料中简体与繁体共存,这会加大模型的学习难度.因此,他们对数据进行繁体转简体的处理. 同时,过滤掉了对分类没有任何作用的 ...

  2. c# combbox删除最后一个item界面不更新

    如果c#的combbox删除的item是当前选中的,而且是最有一个(如果不是最后一个,我也不知道会不更新,没有去测试,但是可以收到跟新到其他的item),它不会自动清空显示,而是保存当前选中. 所以要 ...

  3. OpenStack Heat模板内部函数

    Heat模板内部函数又称为Intrinsic functions. 注:Intrinsic functions只能用在 resource 的 properties 段 和 outputs 中.    ...

  4. 浏览器打印出一段unicode码,汉字无法正常显示

    处理办法:http://tool.chinaz.com/tools/unicode.aspx:unicode转中文就可以啦

  5. 转载【oracle切换表空间】

    http://blog.itpub.net/28939273/viewspace-1061476/ [root@yoon ~]# more /etc/oracle-releaseOracle Linu ...

  6. xcode出现the file couldn't be opened怎么解决

    右键——show In finder——显示xcode包内容——将有数字的删除——把有用的xcode双击

  7. iOS使用UIImageView展现网络图片(转载)

    在iOS开发过程中,经常会遇到使用UIImageView展现来自网络的图片的情况,最简单的做法如下: [cpp] view plaincopy   - (void)viewDidLoad { [sup ...

  8. jenkins的slave/agent如何通过tcp端口和master建立连接

    Jenkins是master-slave/agent结构,可以通过代理把任务下发到各个agent/slave上去执行 如图,首先在master上开启代理配置,指定master上开启的tcp端口,以及和 ...

  9. Spring 使用jsp

    1.New----新建项目 2.选择图中所示按钮,下一步 3.标记处修改工程名,下一步 4选中图中所示选项 5.完成 6.在main目录下新建目录webapp 7.自动导入 8.调整项目结构 9.选择 ...

  10. PyCharm Community Edition编辑Python查看数据库

    描述:利用PyCharm Community Edition社区版本的时候无法查看数据库 解决方法如下: 点击File之后选择setting 点击setting之后出现的画面上面选择Plugins,之 ...