一、什么是框架?

来源于建筑行业,如果建筑一个茅草屋,不需要框架,如果建造一个几个亿的摩天大楼,就需要框架。

小系统用框架浪费人力,中大型系统用框架。

软件中的框架,是一种半成品。实现了一些基础功能的软件。

我们项目开发需要在框架的基础上进行,因为框架已经实现了一些功能,这样就可以提高开发效率!

二、struts2框架介绍

Struts1:是最早的一种基于mvc模式的框架。

Struts2:是在Struts1的基础上,融合了xwork的功能。

也可以说,Struts2 = struts1  +  xwork。

Struts2框架预先实现了一些功能:

1. 请求数据自动封装

2. 文件上传的功能

3. 对国际化功能的简化

4. 数据效验功能

……………….

三、Struts2开发流程

版本: 2.3.x

3.1引入jar文件

1、commons-fileupload-1.2.2.jar【文件上传相关包】

2、commons-io-2.0.1.jar【处理IO的一些工具类包】

3、struts2-core-2.3.4.1.jar【struts2核心功能包】

4、xwork-core-2.3.4.1.jar【Xwork核心包】

5、ognl-3.0.5.jar【Ognl表达式功能支持表】

6、commons-lang3-3.1.jar【struts对java.lang包的扩展,是struts内部的实现,和我们开发没有关系,但必须要】

7、freemarker-2.3.19.jar【struts的标签模板库jar文件】

8、javassist-3.11.0.GA.jar【struts对字节码的处理相关jar,我们一般情况下用JDK自带的字节码处理,但Struts自带了,在新版本里才提供的,2.1就不需要】

3.2配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><display-name>hellostruts2</display-name><!-- 其他拦截器,其他拦截器要放在struts上面,要不然无效,因为struts拦截了所有请求 --><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

web.xml的作用见:http://blog.csdn.net/zengmingen/article/details/50534678

Tomcat启动-à 加载自身web.xml---à加载所有项目的web.xml,通过在项目的web.xml中引入过滤器,

-àStruts的核心功能的初始化,通过过滤器完成 à filter 【init/启动执行,doFilter/访问执行,destroy】

struts2-core-2.3.4.1.jar 中的StrutsPrepareAndExecuteFilter  即为核心过滤器

注意:使用的struts的版本不同,核心过滤器类是不一样的!

3.3开发Action

1.action类,也叫做动作类; 一般继承ActionSupport类,即处理请求的类(struts中的action类取代之前的servlet)

2.action中的业务方法,处理具体的请求

-à必须返回String

à方法不能有参数

-à异常可有可无

public class HelloAction extends ActionSupport {
// 处理请求
public String execute() throws Exception {}
}

3.4配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><!--package 定义一个包,包作用:管理action,通常一个业务模块用一个包name包名不能重复 extends 当前包继承自哪个包abstract 表示当前包是否为抽象包,抽象包不能有action的定义,否则运行时报错。abstract=true:只有当前包被其他包继承时才使用。namespace 默认"/",是访问路径的一部分。action 配置请求路径与Action类的映射关系name 请求路径名称class 请求处理的action类的全名method 请求处理方法resultname action处理方式返回值type 跳转的结果类型标签体中指定跳转的页面--><package name="xxxx" extends="struts-default"><action name="hello" class="com.zengmg.strtus.HelloAction" method="execute"><result name="success">/success.jsp</result></action></package></struts>

一篇文章解释struts常用功能相关推荐

  1. DEDECMS教程:上/下一篇文章标题长度的截取方法

    对dedecms了解的朋友们,想必对如何获取上一篇.下一篇文章的标签也是非常熟悉.dedecms获取上一篇.下一篇文章的标签分别为:{dede:prenext get='pre'/}.{dede:pr ...

  2. 为什么都要鄙视 PHP 程序员? Java联盟 百家号 07-24 21:43 前几天发表了一篇文章《图解:程序员之间是如何相互鄙视的?》,有人就在留言处留言。 可以解释下:为什么都鄙视PHP工程师

    为什么都要鄙视 PHP 程序员? Java联盟 百家号 07-24 21:43 前几天发表了一篇文章<图解:程序员之间是如何相互鄙视的?>,有人就在留言处留言. 可以解释下:为什么都鄙视P ...

  3. 一篇文章搞定矩阵相关概念及意义--通俗解释汇总

    一篇文章理解矩阵在讲什么. 最近在学习矩阵相关知识,但是其抽象的解释让人摸不着头脑,通过浏览一些博客的内容和自己的理解,本文通过通俗的语言将矩阵的内涵做了总结.其中除了书本和个人观点,部分引用博客:. ...

  4. 超硬核!!!一篇文章搞定TCP、UDP、Socket、HTTP(详细网络编程内容+现实解释三次握手四次挥手+代码示例)【网络编程 1】

    TCP.UDP.Socket 一天面试的经验: 什么是网络编程 网络编程中两个主要的问题 网络协议是什么 为什么要对网络协议分层 计算机网络体系结构 1 TCP / UDP 1.1 什么是TCP/IP ...

  5. 一篇文章理解深度神经网络5个常用激活函数

    一篇文章理解深度神经网络5个常用激活函数 1.Sigmoid 2.Tanh 3.ReLU 4.Leaky ReLU 5.Maxout 小结 1.Sigmoid Sigmoid非线性激活函数的数学表达式 ...

  6. 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(离线)

    原址 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(在线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合)     ...

  7. 超强大在线词频统计功能,从一篇文章到一个G的文本均可轻松统计

    词频分析是对文章中重要词汇出现的次数进行统计与分析,是文本挖掘的重要手段.它是文献计量学中传统的和具有代表性的一种内容分析方法,基本原理是通过词出现频次多少的变化,来确定热点及其变化趋势. 前一阵子有 ...

  8. 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(在线)

    集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合)     转眼间 ...

  9. TD算法超详细解释,一篇文章看透彻!

    [已解决]TD算法超详细解释和实现(Sarsa,n-step Sarsa,Q-learning)一篇文章看透彻! 郑重声明:本系列内容来源 赵世钰(Shiyu Zhao)教授的强化学习数学原理系列,本 ...

最新文章

  1. Fusion360操作记录
  2. DirectX和DirectShow介绍和区别
  3. 1.13 梯度检验-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  4. [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count
  5. 适用于MongoDB和Mongometer的SpiderMonkey至V8
  6. 用阿里开源的 Nacos 搞微服务真香!
  7. laravel将数据库对象转为数组的方法
  8. es6 modules 和commonjs
  9. CUDA编成:从GPU的物理体系结构到逻辑结构
  10. 破解版超级数据恢复软件-内含已破解注册码
  11. 基恩士扫码枪SR2000系列通讯
  12. 【Maxscript入门】学习笔记整理一
  13. 我的世界java版种子多村庄_我的世界基岩版最佳的5个村庄种子
  14. python查找csv中某个数据_使用Python从CSV文件中查找中值
  15. idea设置java-google-style
  16. css 文字颜色渐变 animation,css3文字渐变动画
  17. 流量变现的好方法都在这里了!
  18. 笔试java--链表
  19. prim算法的java实现
  20. 易语言调用大漠插件实现多线程后台绑定游戏窗口和打怪

热门文章

  1. ajax发送私信,$.ajax()方法详解
  2. android 根据资源名称,如何在Android中按名称访问可绘制资源
  3. mysql 导入 sqlite_Mysql 数据导入SQlite
  4. 导入自己写的类,却被标红,原因及解决方法是?(Pycharm编辑器为例)
  5. 编译原理(简单自动词法分析器LEX)
  6. mysql 5.5 主从同步问题_MySQL 5.5 主从复制异步、半同步以及注意事项详解
  7. java.lang.class_关于Java.lang.Class的一些疑问
  8. python读写文件操作_详解Python文件读写操作
  9. window设置快捷键左右方向键
  10. Java获取上一周、上一个月、上一年的时间