一篇文章解释struts常用功能
一、什么是框架?
来源于建筑行业,如果建筑一个茅草屋,不需要框架,如果建造一个几个亿的摩天大楼,就需要框架。
小系统用框架浪费人力,中大型系统用框架。
软件中的框架,是一种半成品。实现了一些基础功能的软件。
我们项目开发需要在框架的基础上进行,因为框架已经实现了一些功能,这样就可以提高开发效率!
二、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常用功能相关推荐
- DEDECMS教程:上/下一篇文章标题长度的截取方法
对dedecms了解的朋友们,想必对如何获取上一篇.下一篇文章的标签也是非常熟悉.dedecms获取上一篇.下一篇文章的标签分别为:{dede:prenext get='pre'/}.{dede:pr ...
- 为什么都要鄙视 PHP 程序员? Java联盟 百家号 07-24 21:43 前几天发表了一篇文章《图解:程序员之间是如何相互鄙视的?》,有人就在留言处留言。 可以解释下:为什么都鄙视PHP工程师
为什么都要鄙视 PHP 程序员? Java联盟 百家号 07-24 21:43 前几天发表了一篇文章<图解:程序员之间是如何相互鄙视的?>,有人就在留言处留言. 可以解释下:为什么都鄙视P ...
- 一篇文章搞定矩阵相关概念及意义--通俗解释汇总
一篇文章理解矩阵在讲什么. 最近在学习矩阵相关知识,但是其抽象的解释让人摸不着头脑,通过浏览一些博客的内容和自己的理解,本文通过通俗的语言将矩阵的内涵做了总结.其中除了书本和个人观点,部分引用博客:. ...
- 超硬核!!!一篇文章搞定TCP、UDP、Socket、HTTP(详细网络编程内容+现实解释三次握手四次挥手+代码示例)【网络编程 1】
TCP.UDP.Socket 一天面试的经验: 什么是网络编程 网络编程中两个主要的问题 网络协议是什么 为什么要对网络协议分层 计算机网络体系结构 1 TCP / UDP 1.1 什么是TCP/IP ...
- 一篇文章理解深度神经网络5个常用激活函数
一篇文章理解深度神经网络5个常用激活函数 1.Sigmoid 2.Tanh 3.ReLU 4.Leaky ReLU 5.Maxout 小结 1.Sigmoid Sigmoid非线性激活函数的数学表达式 ...
- 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(离线)
原址 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(在线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合) ...
- 超强大在线词频统计功能,从一篇文章到一个G的文本均可轻松统计
词频分析是对文章中重要词汇出现的次数进行统计与分析,是文本挖掘的重要手段.它是文献计量学中传统的和具有代表性的一种内容分析方法,基本原理是通过词出现频次多少的变化,来确定热点及其变化趋势. 前一阵子有 ...
- 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(在线)
集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合) 转眼间 ...
- TD算法超详细解释,一篇文章看透彻!
[已解决]TD算法超详细解释和实现(Sarsa,n-step Sarsa,Q-learning)一篇文章看透彻! 郑重声明:本系列内容来源 赵世钰(Shiyu Zhao)教授的强化学习数学原理系列,本 ...
最新文章
- Fusion360操作记录
- DirectX和DirectShow介绍和区别
- 1.13 梯度检验-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count
- 适用于MongoDB和Mongometer的SpiderMonkey至V8
- 用阿里开源的 Nacos 搞微服务真香!
- laravel将数据库对象转为数组的方法
- es6 modules 和commonjs
- CUDA编成:从GPU的物理体系结构到逻辑结构
- 破解版超级数据恢复软件-内含已破解注册码
- 基恩士扫码枪SR2000系列通讯
- 【Maxscript入门】学习笔记整理一
- 我的世界java版种子多村庄_我的世界基岩版最佳的5个村庄种子
- python查找csv中某个数据_使用Python从CSV文件中查找中值
- idea设置java-google-style
- css 文字颜色渐变 animation,css3文字渐变动画
- 流量变现的好方法都在这里了!
- 笔试java--链表
- prim算法的java实现
- 易语言调用大漠插件实现多线程后台绑定游戏窗口和打怪
热门文章
- ajax发送私信,$.ajax()方法详解
- android 根据资源名称,如何在Android中按名称访问可绘制资源
- mysql 导入 sqlite_Mysql 数据导入SQlite
- 导入自己写的类,却被标红,原因及解决方法是?(Pycharm编辑器为例)
- 编译原理(简单自动词法分析器LEX)
- mysql 5.5 主从同步问题_MySQL 5.5 主从复制异步、半同步以及注意事项详解
- java.lang.class_关于Java.lang.Class的一些疑问
- python读写文件操作_详解Python文件读写操作
- window设置快捷键左右方向键
- Java获取上一周、上一个月、上一年的时间