一篇文章解释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.jarstruts2核心功能包】

4、xwork-core-2.3.4.1.jarXwork核心包】

5、ognl-3.0.5.jarOgnl表达式功能支持表】

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

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

8、javassist-3.11.0.GA.jarstruts对字节码的处理相关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>




 








本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack 3 零基础入门教程 #12 - 如何使用模块热替换 HMR 来处理 CSS

模块热替换 是什么意思&#xff1f; 以前我们使用的 webpack --watch 或 webpack-dev-server 的功能是监听文件改变&#xff0c;就自动刷新浏览器&#xff0c;而这个 模块热替换 不用刷新浏览器&#xff0c;它是只让修改到的模块&#xff0c;才会在浏览器上发生相应的变化&…

struts2访问jsp页面404

问题描述 在搭建struts2环境的时候&#xff0c;拷贝了web.xml&#xff0c;拷贝了struts.xml&#xff0c;拷贝了jar包。运行&#xff0c;正常&#xff0c;访问jsp页面&#xff0c;报404错误。 web.xml <?xml version"1.0" encoding"UTF-8"?> <w…

centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)

本文主要介绍如何根据官方的Centos镜像文件&#xff0c;在保留原有默认安装的RPM包的基础下&#xff0c;添加自己所需要的RPM包的&#xff0c;最终生成一个自定制版的ISO&#xff0c;节省了宝贵的时间并确保了安装的定制性。对于其他没有介绍的修改&#xff0c;后续在实践中会进…

调用打开另外一个APK

2019独角兽企业重金招聘Python工程师标准>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile对htm5的移动开发绝对是个好用的东西&#xff0c;今天简单谈谈JQuery Mobile中的dialog的使用。 1.对话框的弹出。 2.对话框的生命周期。 3.对话框内事件的注册。 1&#xff09;第一个问题&#xff1a;对话框的弹出。 如果要弹出一个对话框&#xff0c;可以在页面…

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附录 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java内容仓库和Spring

JCR模块 Spring Modules的一部分&#xff0c;JCR模块的主要目标是&#xff1a;以一种类似Spring主分发包中ORM包的方式&#xff0c;简化使用JSR-170 API进行开发。特点如下&#xff1a; JcrTemplate&#xff0c;允许执行JcrCallback和异常处理&#xff08;将需检查的JCR异常转换…

jQuery Mobile弹出对话框后不刷新原页面,保持原页面内容不变

使用jQuery Mobile开发移动应用程序时&#xff0c;在一个页面上弹出对话框&#xff0c;关闭对话框后&#xff0c;发现原来的页面被刷新了。如果原页面上有一些已经选择或者填写的数据&#xff0c;则这些数据就会丢失。这时候&#xff0c;就需要对对话框的返回按钮做一些处理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享内存

我使用MPI(mpi4py)脚本(在单个节点上),它与一个非常大的对象一起使用.为了让所有进程都可以访问该对象,我通过comm.bcast()分发它.这会将对象复制到所有进程并占用大量内存,尤其是在复制过程中.因此,我想分享像指针而不是对象本身.我发现memoryview中的一些功能对于增强进程内对…

c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...

个C语言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“万物莫不有对”体现了中国传统哲学的矛盾观。用户在进行产品的三维设计时&#xff0c;干函可以采用以下( )的设计方法。数组少意识是人脑对客观…

oracle的背景

oracle简介 1977年 美国人 Larry 成立软件开发实验室 。 1980年 用c/c开发了世界第一个商用关系型数据库&#xff08;RDBMS&#xff09;。 1983年 公司更名为Oracle Corporation&#xff08;甲骨文公司&#xff09;。 2009年4月21日&#xff0c;Oracle收购Sun公司。 30多…

Citrix Netscaler版本管理和选择

Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展&#xff0c;有很多人在维护设备时经常搞不懂Netscaler软件版本是如何查看和选择&#xff0c;当前软件是否需要升级&#xff0c;当前软件是否稳定等。基于以上问题&a…

树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)

二叉树的基本操作(源代码)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle实例与数据库

一、名称 Oracle数据库服务器。单叫数据库或服务器都不全面。 二、组成 oracle数据库服务器由二部份组成&#xff1a;实例和数据库 实例&#xff1a; 可理解为对象&#xff0c;看不见。数据库&#xff1a; 理解为类&#xff0c;看得见的&#xff0c;E:\app\Administrator\…

1.Dao代码如何编写?

Dao代码如何编写&#xff1f; 1、操作xml数据。数据保存在xml文件里。2、使用jdbc技术。2.1、原始的jdbc操作&#xff0c;connection&#xff0c;statement&#xff0c;resultset。2.2、自定义一个持久层的框架&#xff0c;封装通用的dao操作方法。2.3、DbUtils组件&#xff0c…

WEB前端面试题汇总整理01

1.JS找字符串中出现最多的字符 例如&#xff1a;求字符串nininihaoa中出现次数最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次数加1} else {o[char] 1;…

c语言 文件游程统计,游程 码表 如何形成

游程 码表 如何形成求一个程序 将下表用huffman 树存储表示用传统的霍夫曼建立的树 好像不能形成此码表。我感觉应该有一个特等的算法。我也试了好几种方法&#xff0c;感觉都不行&#xff0c;希望大家给点建议。(码表 要利于编码和解码)(部分码表)白游程 码子 黑游程 码子(长…

用2468这四个数字c语言,C语言作业及参考答案.doc

C语言及实验作业参考做法分支程序设计上机作业&#xff1a;标题4.3三角形判断描述输入三条边的长&#xff0c;输出这三条边是否构成等边三角形、等腰三角形、直角三角形、普通三角形&#xff0c;还是不能构成三角形输入数据整数a,b,c的值输出数据等边三角形、等腰三角形、直角三…

C# WinForm开发系列 - GDI+【转】

http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum6&fps1 C# WinForm开发系列 - GDI Posted on 2009-07-19 15:23 peterzb 阅读(48850) 评论(17) 编辑 收藏 UI&#xff08;User Interface&#xff09;编程在整个项目开发过程中是个颇为重要的环节&…

2.ORM思想

一、ORM思想介绍 orm是一种思想&#xff0c;是dao层代码的一种编写思想。其中&#xff1a;o代表Object&#xff0c;java对象&#xff1b;r代表Relation&#xff0c;关系型数据库&#xff1b;m代表Map&#xff0c;java对象和关系型数据库表的映射关系。该思想主张&#xff1a;1、…