(一)Struts2 基础
一、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 下载
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 基础的更多相关文章
- Struts2入门1 Struts2基础知识
Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...
- Struts2基础学习2
Struts2基础学习2 项目结构,测试页面与实体类 <%@ page language="java" contentType="text/html; charse ...
- Struts2基础入门
Struts2基础入门 创建一个web工程 0)导包并且创建一个核心配置文件 <?xml version="1.0" encoding="UTF-8"?& ...
- Struts2基础学习总结
引用自:http://www.cnblogs.com/jbelial/archive/2012/05/10/2486886.html Struts 2是在WebWork2基础发展而来的. 注意:str ...
- 经典MVC框架技术-struts2基础知识
Struts2框架简介 struts2框架是在struts1和webwork技术的基础上,进行合并的全新框架,struts2以Webwork为核心,采用拦截器来处理用户的请求,这样的设计使得业务逻辑控 ...
- Struts2框架学习第三章——Struts2基础
本章要点 — Struts 1框架的基本知识 — 使用Struts 1框架开发Web应用 — WebWork框架的基本知识 — 使用WebWork框架开发Web应用 — 在Eclipse中整合To ...
- struts2 基础
框架(frameWork):某一种应用的半成品 struts2: 表现层 处理与页面进行交互的相关功能 hibernate: 持久层 负责业务逻辑数据的持久化 spring: 业务层 负责复杂的业 ...
- struts2 基础学习
Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts ...
- 2. Struts2 基础
1. Struts2简介 Struts2是一个WEB端MVC框架.作为比较早的MVC 框架之一,Struts2在使用中还是比较多的.虽然个人感受没有SpringMVC还那么的好用 Struts2 官网 ...
随机推荐
- linux too many files
Too many open files这个问题主要指的是进程企图打开一个文件,或者叫句柄,但是现在进程打开的句柄已经达到了上限,已经无法打开新句柄了. 网上一提到这个问题就要增加句柄上限,而往往这种情 ...
- 【分类算法】决策树(Decision Tree)
(注:本篇博文是对<统计学习方法>中决策树一章的归纳总结,下列的一些文字和图例均引自此书~) 决策树(decision tree)属于分类/回归方法.其具有可读性.可解释性.分类速度快等优 ...
- 静态文件cdn自解析生成相对路径
一.场景和目标: 用户上传一个包含 index.html 的静态资源压缩包,资源内所有文件都是相互依赖的,不需要用户对内部文件内容做任何特殊处理,仅通过服务端逻辑处理达到用户访问 http: ...
- Oracle SQL 脚本跟踪
NC Oracle SQL 脚本跟踪 脚本: select * from v$sqlarea a and a.LAST_ACTIVE_TIME >= to_date( '2013-02-21 1 ...
- Java测试当前应用所占用的内存示例
package test; import java.util.HashMap; import java.util.Map; public class TestMemory { public stati ...
- Docker storage driver(十四)
目录 一.storage driver 作用 1.Images and layers 2.Container and layers Copy-on-Write 3.Data volumes and t ...
- Flutter运行报错 `kernel_snapshot for errors` 解决方案
Flutter运行报错 `flutter kernel_snapshot for errors`解决方案 当你Flutter项目删除了dart文件如果遇到 target:kernel_snapshot ...
- 最新 中手游java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.中手游等10家互联网公司的校招Offer,因为某些自身原因最终选择了中手游.6.7月主要是做系统复习.项目复盘.LeetCo ...
- Nginx基本使用方法
原帖:http://zyjustin9.iteye.com/blog/2017394 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人 ...
- C++中pair详解
pair是定义在<utility>中的生成特定类型的模板,它的作用是把一组数据合并为一体,实际上是一个拥有两个成员变量的struct. 创建一个pair对象时,需要提供两个数据类型(不要求 ...