![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Struts2
文章平均质量分 84
tiantongxa
这个作者很懒,什么都没留下…
展开
-
《研磨struts2》第九章 国际化 之 9.6 指定语言信息的不同方式
9.6 指定语言信息的不同方式9.6.1概述在本节开始之前,请读者把包级别的国际化信息删掉,仅保留全局级别的国际化信息。 在9.3.3小节中,已经学过修改、使用浏览器语言设置的方式了,这里就不赘述了。接下来看看其它的方式9.6.2 Struts2的常量设置还可以使用Struts2的常量设置来覆盖浏览器的语言设置。比如前面的示例,在struts.转载 2012-07-27 09:25:00 · 484 阅读 · 0 评论 -
《研磨struts2》第八章 Struts2的Taglib 之 8.2 数据标签
8.2 数据标签数据标签更关注如何从值栈上取值或者向值栈赋值。8.2.1 property标签1:功能:用来输出OGNL表达式的值。2:属性 property标签的主要属性:value:用来获取值的OGNL表达式,如果value属性值没有指定,那么将会被设定为top,也就是返回位于值栈最顶端的对象。default:如转载 2012-07-27 09:21:38 · 294 阅读 · 0 评论 -
《研磨struts2》第七章 值栈和OGNL 之 7.3 使用OGNL访问复杂对象
7.3 使用OGNL访问复杂对象7.3.1 访问域对象通过ognl访问域对象,这件事情其实在好早以前,我们就已经做过了,只是那个时候不知道罢了,还是来示例一下。(1)先来准备一个域对象,很简单,只有两个属性,代码示例如下: java代码:查看复制到剪贴板打印package cn.javass.ognl.vo; pub转载 2012-07-27 09:20:25 · 377 阅读 · 0 评论 -
《研磨struts2》第七章 值栈和OGNL 之 7.2 OGNL
7.2 OGNL7.2.1 OGNL概述OGNL是对象图导航语言Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。在转载 2012-07-27 09:20:00 · 284 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.7 自定义Result
5.7 自定义Result5.7.1 什么是自定义Result所谓自定义Result,就是由我们自行开发的Result,而不是使用由Struts2预先定义好的Result。 在实际开发中,需要自定义Result的机率并不大,因为常见的各种页面展示技术,Struts2都已经预定义好相应的Result了,无需我们自行开发。如果我们要自定义Result,要么就是包转载 2012-07-26 09:45:02 · 283 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.4 使用通配符
5.4 使用通配符5.4.1 使用通配符前面学过,可以在定义元素的name属性的时候使用通配符,使这个元素不仅仅可以匹配一个URL,还可以匹配一类URL。而action的class属性和method属性能使用通配符的值。如果使用以下配置: java代码:查看复制到剪贴板打印"*_*" class="cn.javass.action转载 2012-07-26 09:43:26 · 243 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.1 Result基础
5.1 Result基础5.1.1 Result是什么和能干什么简单的说,Result是Action执行完后返回的一个字符串,它指示了Action执行完成后,下一个页面在哪里。具体页面在哪里,是在struts.xml里面配置的。就是每个元素里面,配置的子元素,比如: java代码:查看复制到剪贴板打印"hellowor转载 2012-07-26 09:41:19 · 229 阅读 · 0 评论 -
《研磨struts2》第四章 Action 之 4.4 Action的配置
4.4 Action的配置4.4.1 的配置通过上面的示例可以看出,Action需要在struts.xml中配置才可以使用,而且Action应该配置成为元素的子元素,那么元素的功能是什么呢? 元素可以把逻辑上相关的一组Action、Result、Intercepter等元素封装起来,形成一个独立的模块,package可以继承其他的package,也可以作为父包被其他的p转载 2012-07-26 09:40:10 · 272 阅读 · 0 评论 -
《研磨struts2》 第六章 拦截器 之 6.4 两个有用的拦截器
6.4 两个有用的拦截器6.4.1 更强大的logger拦截器在学习了这么多拦截器的理论知识过后,来示范两个真实项目中用得到的拦截器。先来看看更强大的logger拦截器。Struts2自带的logger拦截器只是打印出了Action所对应的URL以及执行的方法名称,这对实际开发来说是肯定不够的。 实际开发中为了调试方便,要记录的信息比较多,通常需要把转载 2012-07-26 09:47:22 · 363 阅读 · 0 评论 -
《研磨struts2》第八章 Struts2的Taglib 之 8.3 控制标签
8.3 控制标签控制标签关注程序的运行流程,比如用if/else来进行分支控制,用iterator来进行循环控制。接下来就来学习Struts2的控制标签。8.3.1 if、elseif与else标签1:if标签的功能: 类似于Java程序中的if,用来表达分支判断。 else标签的功能: 类似于Java程序中的else。转载 2012-07-27 09:22:04 · 437 阅读 · 0 评论 -
《研磨struts2》第九章 国际化 之 9.1 概述
9.1 概述国际化(Internationalization),通俗点讲就是让软件实现对多种语言的支持,可以通过简单的设置让软件支持的语言从一种切换到另一种。当然,最直观的就是界面显示了,比如一个实现了国际化的软件,可以很容易的从英文界面切换成中文界面。在日常工作中也常见到国际化的软件,比如Eclipse就是多语言的,只要安装了相应的语言包,在启动的时候指定语言参数就可以实现软件转载 2012-07-27 09:23:06 · 254 阅读 · 0 评论 -
《研磨struts2》第九章 国际化 之 9.5 Struts2访问国际化信息的不同方式
9.5 Struts2访问国际化信息的不同方式为了示例的简洁,删除在9.4节中添加的I18NAction_zh_CN.properties文件和package.properties文件,只保留全局级国际化信息资源文件。并在message.properteis中增加一个带有参数的国际化信息。 java代码:查看复制到剪贴板打印labela =转载 2012-07-27 09:24:38 · 382 阅读 · 0 评论 -
《研磨struts2》第九章 国际化 之 9.4 资源文件读取顺序
9.4 资源文件读取顺序在进入具体示例之前,先来写一个Action,然后配置9.3.2节中的jsp作为这个Action的结果页面,好方便本节知识的示范。 这个Action非常的简单,什么都不做,只是让execute方法返回SUCCESS即可。示例代码如下: java代码:查看复制到剪贴板打印package cn.java转载 2012-07-27 09:24:15 · 474 阅读 · 0 评论 -
《研磨struts2》第九章 国际化 之 9.3 Struts2中的国际化入门
9.3 Struts2中的国际化入门9.3.1引用国际化信息资源文件要使用Struts2来实现国际化的支持,同样先来准备国际化信息资源文件,把三个国际化资源信息文件恢复到最初始的状态:(1)默认语言文件:message.properties java代码:查看复制到剪贴板打印labela = labela in zh_CN转载 2012-07-27 09:23:52 · 471 阅读 · 0 评论 -
《研磨struts2》第八章 Struts2的Taglib 之 8.4 UI标签
8.4 UI标签8.4.1概述UI标签是用来生成Web界面,或者为Web界面提供某些功能支持的标签,比如:表单标签就是把各种途径获取的需要展示的数据,通过动态生成HTML的形式展示到界面上。UI标签分成如下几种:Form Tags:表单标签,包含所有可以用在Form表单里面的标签Non-Form UI Tags:非表单标签,主要包含错误展示、组件等Ajax Tags:用来支持转载 2012-07-27 09:22:35 · 895 阅读 · 0 评论 -
《研磨struts2》第八章 Struts2的Taglib 之 8.1 Struts2的Taglib概述
8.1 Struts2的Taglib概述8.1.1概述Struts2自带了一套非常强大的标签库,不仅自身功能强大,而且与Struts2中的其它部分无缝结合。在学习之前,先来简要回忆一下标签到底是干什么的?估计大多数朋友都使用过JSTL,那自然熟悉JSTL的核心标签,也就是c标签。在JSP页面上使用标签,可以分离JSP上的Java代码与HTML。其中HTML用来管理把数据展转载 2012-07-27 09:21:15 · 258 阅读 · 0 评论 -
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext
7.4 ActionContext和ServletActionContext7.4.1 再探ActionContext前面已经了解到ActionContext是Action执行时的上下文,里面存放着Action在执行时需要用到的对象,我们也称之为广义值栈。 Struts2在每次执行Action之前都会创建新的ActionContext,在同一个线程里Acti转载 2012-07-27 09:20:48 · 301 阅读 · 0 评论 -
《研磨struts2》第七章 值栈和OGNL 之 7.1 值栈
7.1 值栈7.1.1 值栈是什么简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心。Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action、Result、Interceptor等Struts2的其他部分使用,这样一来,数据被集中管理起来而不会凌乱,大大方便了程序编写。Struts2中关于值栈的另外一个很激动人心的特性就是转载 2012-07-27 09:19:30 · 330 阅读 · 0 评论 -
《研磨struts2》第九章 国际化 之 9.2 Java内置的国际化
9.2 Java内置的国际化Struts2的国际化也不是无本之木,它依赖于Java内置的国际化机制,只是在Java内置的国际化机制的基础上增加了跟Struts2其他组件的融合,使得其他组件也可以非常方便的使用国际化。9.2.1 Java内置的国际化入门1:准备国际化信息文件Java内置的国际化,以java.util.ResourceBundle和java.util转载 2012-07-27 09:23:30 · 555 阅读 · 0 评论 -
《研磨struts2》 第六章 拦截器 之 6.1 拦截器基础
6.1 拦截器基础6.1.1 拦截器是什么拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制。 来回顾一下官方给出的Struts2系统架构图中关于拦截器的部分,如下图所示:图6.1 拦截器示意图 这个图清晰的描述出了拦截器的运转载 2012-07-26 09:45:31 · 229 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.6 PreResultListener
5.6 PreResultListener5.6.1 什么是PreResultListener在实际开发当中,常常需要在Action执行完毕后,而Result还没有开始执行的时候,做一些功能处理,比如异常处理,那么该怎么做呢? 这就需要使用PreResultListener了。看名字就知道,这是一个“Listener”,也就是一个监听器,用来执行事件监听的。转载 2012-07-26 09:44:37 · 298 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.5 Struts2的异常映射
5.5 Struts2的异常映射5.5.1 异常映射基础在Action中execute方法的方法签名为public String execute() throws Exception,这样,Action可以抛出任何Exception,那么,Exception抛给谁呢?1:自己实现异常处理来做一个简单的试验,在Action的方法中这样写: java转载 2012-07-26 09:43:54 · 240 阅读 · 0 评论 -
《研磨struts2》 第二章 Struts2的HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始
2.3.Struts2的HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始2.3.1 起点概述考虑到大部分朋友都是有一定经验的web开发者,因此从Servlet+JSP+JavaBean实现MVC开始,再过渡到Struts2的开发,这样能让大家把以前的知识自然迁移到Struts2上,使得学习曲线变得平滑。说明一下,由于本机的8080端口被别的转载 2012-07-20 12:59:53 · 708 阅读 · 0 评论 -
《研磨struts2》 第一章 Struts2概述 之 Struts2基础
1.2 Struts2 基础1.2.1 Struts1时代随着时间的推移,Servlet+JSP+JavaBean模型暴露出了它的缺点:流程凌乱:Servlet在完成对用户请求的处理后,下一个页面是谁?如何跳转过去?这些都是在Servlet里面直接写代码来完成的。导致Servlet既要处理请求,还要负责页面的流程,使得Servlet功能不够单一,更要命的是很难整转载 2012-07-20 11:27:25 · 626 阅读 · 0 评论 -
《研磨struts2》 前言
前言创作背景Struts2是一套非常优秀的Web应用框架,实现优雅、功能强大、使用简洁,已经出现几年时间了。随着它被越来越多的开发人员掌握和使用,已有大量的企业应用项目采用Struts2来作为Web框架进行开发,可以这么说:掌握Struts2的开发,是如今每个进行Web开发的程序员的一个必备技能。 可是在软件开发行业,新知识层出不穷,日常工作也非常繁重,学习时间转载 2012-07-20 11:25:56 · 269 阅读 · 0 评论 -
《研磨struts2》 第二章 Struts2的HelloWorld 之 概述
2.1 概述2.1.1 功能概述通过上一章的讲述,明白了Struts2是什么,有什么以及能干什么,接下来就该来讨论怎么做的问题了,也就是讨论如何使用Struts2来开发基于MVC的web应用。按照惯例,学习一个新的东西,都是从HelloWorld起步的,这里也不例外,本章就一起来看一个Struts2的HelloWorld实现。本章会从搭建Struts2的开发环境转载 2012-07-20 12:58:57 · 252 阅读 · 0 评论 -
《研磨struts2》 第一章 Struts2概述 之 MVC模式
1.1 MVC模式1.1.1 MVC模式简介MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。 在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封转载 2012-07-20 11:26:46 · 409 阅读 · 0 评论 -
《研磨struts2》第三章 Struts2的架构和运行流程 之 3.2 Struts2的运行流程
3.2 Struts2的运行流程3.2.1 运行流程先回忆一下在HelloWorld中,我们做了什么:在web.xml中配置了Struts2的过滤器写了一个Action类,名称为HelloWorldAction在struts.xml中配置了这个Action类写了两个页面,一个是登录页面,一个是欢迎页面只做了这么点事情,就可以在Struts2的帮助转载 2012-07-20 13:03:16 · 482 阅读 · 0 评论 -
《研磨struts2》第三章 Struts2的架构和运行流程 之 3.1 Struts2的系统架构
3.1 Struts2的系统架构3.1.1 Struts2的系统架构在上一章通过HelloWorld示范了Struts2的基本开发过程,这还远远不够,因为我们都知道,在使用一个框架的时候,除了要掌握如何使用框架进行开发外,最好还要知道框架做了些什么,以及基本的运行流程,这对以后的学习是很有帮助的。那么接下来就来看看Struts2的系统架构和内部运行流程。转载 2012-07-20 13:02:15 · 354 阅读 · 0 评论 -
《研磨struts2》 第二章 Struts2的HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始
2.5 开发中的一些小窍门2.5.1 概述通过以上内容的学习,应该基本了解了Struts2的开发流程,但是,有一些细节功能你并没有看到。比如,在struts.xml中,需要注册Action类的全类名,这个全类名是哪里来的?是完全手写的,还是拷贝的?怎么拷贝的?大家都知道,好的操作方式不容易出错,而且开发效率也更高。因此,特别准备了这一小节的知识,在这里来讲述在Hello转载 2012-07-20 13:01:39 · 320 阅读 · 0 评论 -
《研磨struts2》 第二章 Struts2的HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始
2.4 Struts2的HelloWorld2.4.1 概述在上一个小节中,使用Model2来实现了一个简单的登陆功能,在本节里面,使用Struts2来实现同样的功能。Model2和Struts2都实现了MVC,因此Struts2的实现和上面Model2的实现是类似的。 前面讲到Struts2是一个基于MVC的轻量级框架,那就以MVC为突破口来分析,看看St转载 2012-07-20 13:00:51 · 515 阅读 · 0 评论 -
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
4.5 Action的其它重要知识4.5.1 Action的生命周期 Struts2的Action的生命周期是:Struts2为每个请求都重新初始化一个Action的实例。可以稍微改造一下代码来验证一下。1:给HelloWorldAction加上一个public无参的构造方法,在里面输出一句话。大家都知道,一个Java类如果没有写构造方法,那么会转载 2012-07-26 09:40:33 · 258 阅读 · 0 评论 -
《研磨struts2》第三章 Struts2的架构和运行流程 之 3.3 Struts2的核心概念
3.3 Struts2的核心概念3.3.1 核心概念在上面的运行流程图里,看到了很多Struts2的模块。本节将简要描述一下那些与实际开发息息相关的概念。1:FilterDispatcher Struts2的前端控制器,也是Struts2的MVC中的控制器部分。在实际开发中,只需要在web.xml中配置一次即可。但是一定要注意,如果还有其他的过滤器,转载 2012-07-20 13:03:42 · 427 阅读 · 0 评论 -
《研磨struts2》 第六章 拦截器 之 6.3 自定义的拦截器
6.3 自定义的拦截器6.3.1 什么是自定义的拦截器所谓自定义的拦截器,就是由我们自己定义并实现的拦截器,而不是由Struts2定义好的拦截器。虽然Struts2的预定义拦截器已经满足了大多数情况的需要。但在有些时候,我们可能会根据项目的实际需要而自定义一些拦截器,来实现一些特别的功能。 比如,我们可能认为Struts2预置的logger拦截器功能转载 2012-07-26 09:46:49 · 441 阅读 · 0 评论 -
《研磨struts2》第四章 Action 之 4.3 Action的数据
4.3 Action的数据4.3.1 数据来源在helloworld示例里面,在运行Action的execute方法的时候,你会神奇般的发现,Action的属性是有值的,而这正是Action进行请求处理所需要的数据。那么,这些数据从何而来呢? 很明显,这些数据就是你在登录页面填写的数据,换句话说,这些数据来源于用户请求对象,也就是request对象。转载 2012-07-26 09:39:42 · 652 阅读 · 0 评论 -
《研磨struts2》第四章 Action 之 4.2 Action的实现
4.2 Action的实现4.2.1 POJO的实现在Struts2中,Action可以不实现任何特殊的接口或者继承特殊的类,仅仅是一个POJO(Plain Old Java Object,简单的Java对象)就可以,但是要有一个公共的为空参的构造方法,其实缺省的构造方法就可以,还要有一个execute方法,定义格式如下: java代码:查看转载 2012-07-26 09:38:46 · 479 阅读 · 0 评论 -
《研磨struts2》第四章 Action 之 4.1 Action基础
4.1 Action基础4.1.1 Action是什么在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。也就是说,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理,因此说一个Action类代表了用户的一次请求或调用。转载 2012-07-26 09:38:01 · 287 阅读 · 0 评论 -
《研磨struts2》 第六章 拦截器 之 6.2 预定义的拦截器
6.2 预定义的拦截器6.2.1 预定义的拦截器一起来看看Struts2中已经定义好的预定义拦截器。Struts2的预定义拦截器都定义在struts-default.xml文件的struts-default包内,定义如下: java代码:查看复制到剪贴板打印 "alias" class="com.op转载 2012-07-26 09:46:24 · 1119 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.3 全局Result
5.3 全局Result5.3.1 全局Result概述以前的元素都是作为的子元素出现的,这被称为局部Result,只可以由本元素访问。要是有一些Result需要由多个Action共用,比如,系统的每个页面都会判断用户是否登陆,如果没有登陆,那么都要跳转到登录页面。这种情况该怎么办呢?这个时候,就可以配置全局Result,让这多个Action共享这些全局的Res转载 2012-07-26 09:42:44 · 367 阅读 · 0 评论 -
《研磨struts2》第五章 Result 之 5.2 预定义的Result
5.2 预定义的Result5.2.1 预定义的ResultType在Struts2中,预定义了很多ResultType,其实就是定义了很多展示结果的技术。Struts2把内置的都放在struts-default包中。struts-default包就是我们配置的包的父包,在第4章已经看到这个包定义在struts2-core-2.1.8.1.jar包中的根目录下的文件struts转载 2012-07-26 09:41:55 · 1401 阅读 · 0 评论