整合Eclipse、Struts、Hibernate和Spring的Java web开发

本讲我们将介绍几种比较常用的Struts高级技术。

本讲要点:
l Struts对国际化的支持

l DispatchAction类

l 动态ActionForm

l Validator验证框架

5.1 Struts对国际化的支持
“国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同而显示不同的用户界面。例如,请求来自于一台中文操作系统的客户端计算机,则应用程序响应界面中的各种标签、错误和帮助信息均使用中文文字;如果客户端计算机采用的是英文操作系统,则应用程序也应能识别并自动以英文界面做出响应。

可以看出,引入国际化机制的目的在于提供自适应、更友好的用户界面,而并未改变程序的其他功能/业务逻辑。人们常用I18N这个词作为“国际化”的简称,其来源是英文Internationaliztion的首末字母i和n及它们之间的字符数18。

Struts框架通过使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来支持国际化。java.text.MessageFormat类定义的技术可以支持消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。

5.1.1 资源文件和资源包
要用Struts实现国际化和本地化,首先要定义资源文件的名称,这个文件会包含用默认语言编写的在程序中会出现的所有消息。这些消息以“关键字—值”的形式存储,例如:

error.validation.location = The entered location is invalid

当对一个应用程序进行国际化处理时,所要用的各种语言版本的“标签”信息应该存放在不同的属性文件中,每一个这样的文件对应一种语言的版本。所有属性文件合在一起被称为资源包(Resource Bundle)。

属性文件的命名格式可分为以下两种:

l 文件名前缀.properties

l 文件名前缀_语言种类.properties

文件名后缀必须为properties,前缀则由开发者自行确定,其中的语言种类字段必须是有效的ISO(International Standardization Organization,国际标准化组织)语言代码,ISO-639标准定义的这些代码格式为英文小写、双字符,具体见表5-1所示。

表5-1 ISO-639标准常用语言代码

语 言
编 码

汉语(Chinese)
Zh

英语(English)
En

法语(French)
Fr

德语(German)
De

日语(Japanese)
Ja

意大利语(Italian)
It


访问网址http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt可以获取其他ISO-639标准语言代码。

文件名前缀中默认语言代码的为默认属性文件。当系统找不到与客户端请求的语言属性匹配的属性文件时,则使用该默认属性文件。

例如,如果我们要对前面的登录系统进行国际化处理,要求根据不同的语言环境显示英文和中文用户界面,那么就需要创建英文和中文版本的资源文件,分别取名为ApplicationResources.properties和ApplicationResources_zh.properties。它们的内容如例程5-1和例程5-2所示。

例程5-1 英文版资源文件ApplicationResources.properties

#A simple properties file

title.login = Login Page

label.username = Input your username

label.password = Input your password

item.submit = Submit

item.reset = Reset

message.success = you’re successful to login in. Now you’ve entered the main page.

message.failure = you fail to login in. You need register your information.

例程5-2 中文版资源文件ApplicationResources_zh.properties

#一个简单的属性文件

title.login = 登录页面

label.username = 姓名

label.password = 密码

item.submit = 登录

item.reset = 重置

message.success = 你已成功登录。现进入了主页。

message.failure = 你登录失败。现进入注册页面,请注册你的信息。

可以看出,属性文件中包含的是“键—值”对的形式的字符串信息。属性文件在应用程序启动时被载入内存,并根据客户端请求所携带的语言/地区信息进行匹配和使用。这些信息以java.util.Locale类的属性的方式被封存在request对象中。可以通过HttpServletRequest类的getLocale()方法获得相应的Locale对象,进而再调用Locale对象的getLanguage()方法获取具体的语言种类信息。

资源文件需要存储在类的路径下,而且它的路径要作为初始化参数传送给ActionServlet时,路径的格式要符合完整Java类的标准命名规范。比如,如果资源文件存储在WEB-INF\classes目录中,文件名是 ApplicationResources.properties,那么需要传递的参数值是ApplicationResources。如果文件在WEB-INF\classes\com\test中,那么参数值就应该是com.test.ApplicationResources。

资源包需要在Struts配置文件struts-config.xml中进行配置。<message-resources>元素就是用来配置资源包的。

<message-resources parameter="ApplicationResources"/>

如果有多个资源包要配置,那么它们用key属性来进行区分。

<message-resources parameter="ApplicationResources"/>

<message-resources key="Image" parameter="ApplicationImageResources"/>

<message-resources key="XXX" parameter="ApplicationXXXResources"/>

其中,不带key属性的就是默认的资源包。

资源包应该放在Web应用程序的WEB-INF/classes目录下,当系统初始化时,会装载这些资源文件。如果修改了资源文件,则需要重启应用服务器。

5.1.2 资源文件的编码转化
由于资源包是国际化的保证,因此它的编码应当使用标准的编码方式,一般为Unicode。所以,在资源包中的文件都需要经过编码转制。在JDK自带的工具中有一个native2ascii程序就是专门来进行资源文件转码的。该工具位于JDK安装目录下的bin目录中。

需要特别注意的是,中文版属性文件ApplicationResources_zh.properties需要进一步处理,需要把它里面的中文字符转化为Unicode代码,否则国际化处理的页面将会出现乱码。利用native2ascii程序对中文版资源文件进行编码转化的命令格式如下:

文件所在目录> native2ascii –encoding GB2312 ApplicationResources_zh.properties

ApplicationResources_zh_CN.properties

例如,假如资源文件ApplicationResources_zh.properties放在D:\ login\WEB-INF\classes目录中,使用native2ascii对它进行转化的命令如下:

D:\login\WEB-INF\classes>native2ascii –encoding GB2312 ApplicationResources_zh.properties

ApplicationResources_zh_CN.properties

经过native2ascii转化后,生成一个新的资源文件ApplicationResources_zh_ CN.properties,它的内容例程5-3所示。

例程5-3 中文版资源文件ApplicationResources_zh_CN.properties

title.login = \u767b\u5f55\u9875\u9762

label.username = \u59d3\u540d

label.password = \u5bc6\u7801

item.submit = \u767b\u5f55

item.reset = \u91cd\u7f6e

message.success = \u4f60\u5df2\u6210\u529f\u767b\u5f55\u3002\u73b0\u8fdb\u5165\u4e86\u4e3b\

u9875\u3002

message.failure = \u4f60\u767b\u5f55\u5931\u8d25\u3002\u73b0\u8fdb\u5165\u6ce8\u518c\u9875\

u9762\uff0c\u8bf7\u6ce8\u518c\u4f60\u7684\u4fe1\u606f\u3002

5.1.3 资源包的访问
资源包建立好后,就可以对其进行访问了。访问的方式主要有两种:一种在JSP页面中通过<bean:message>标记来访问,另一种是在程序中访问。

在JSP页面中访问资源包,需要使用<bean:message>标记。在使用该标记之前,必须首先部署包含此标记的Struts标记库文件struts-bean.tld,具体操作步骤如下:

(1)将Struts发布包中提供的标记库文件struts-bean.tld复制到待进行国际化的应用程序所在项目的WEB-INF目录下。

(2)在使用该标记库的应用程序的部署文件web.xml的<web-app>元素中添加相应的<taglib>元素,具体语法格式如下:

<taglib>

<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

</taglib>

(3)在使用<bean:message>标记的JSP源文件的开头引入此标记库,具体格式如下:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

在程序中访问资源包主要是在Action类中用到。Action提供了getResources()方法可以获得org.apache.struts.MessageResources类的一个实例。MessageResources代表资源包的一个类,它是一个抽象类,因此需要由Action的基类中的getResources()方法来返回它的一个实例。以下是一段程序示例:

//获得用户的Locale信息

Locale locale = getLocale(request);

//获取资源包

MessageResources message = getResources(request);

//从资源包中得到消息文本

String title = message.getMessage(locale,"title.login");

可以看到在调用了getResources()方法后,便可以获得相应的资源包,接下来,就可以按照request对象中的Locale信息来获取相应资源包中的文本。值得注意的是getMessage()有几种形式,如下所示:

getMessage(String key)

getMessage(Locale locale, String key)

getMessage(Locale locale, String key, Object[] args)

其中,最后一种getMessage()方法可以传入参数给资源包中的文件,更加灵活地实现消息的输出。

5.1.4 国际化的应用举例
例如,我们要对第3讲的登录系统的登录页面进行国际化处理。需要修改的组件有login.jsp、web.xml、struts-config.xml及资源文件。具体步骤如下。

(1)创建所需的资源包,其中包含2个属性文件:ApplicationResources.properties和ApplicationResources_zh_CN.properties,分别如例程5-1和例程5-3所示。

(2)将这两个属性文件保存到Web应用项目的WEB-INF/目录下。

(3)把struts-bean.tld标记库文件和struts-html.tld标记库文件复制到Web应用项目的WEB-INF/目录下。这些标记库文件可以从Struts的下载压缩包的lib目录中得到。

(4)修改web.xml文件。

在web.xml中相应的<taglib>元素,以声明资源文件和struts-bean.tld标记库。web.xml文件修改如下:

<web-app>

……

<taglib>

<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

</taglib>

</web-app>

(5)修改struts-conf.xml。

在原来的struts-config.xml中添加<message-resources>元素,以指明所要用到的资源包。修改部分代码如下:

<struts-config>

…..

<message-resources parameter="ApplicationResources"/>

</struts-config>

(6)修改登录页面login.jsp。

修改登录页面如例程5-4所示。在原来的login.jsp源码中,引入struts-bean.tld标记库文件,利用<bean;message>标记从资源文件中读取标签信息代替原来的字符文本。

例程5-4 国际化处理后的login.jsp

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ page contentType="text/html; charset=gb2312" %>

<html:html>

<head><title><bean:message key="title.login"/></title> </head>

<body>

<html:form action="loginAction" method="post">

<bean:message key="label.username"/>:

<html:text property="username" size="15"/><br><br>

<bean:message key="label.password"/>:

<html:password property="password" size="15"/><br><br>

<html:submit property="submit">

<bean:message key="item.submit"/>

</html:submit><br>

</html:form>

</body>

</html:html>

(6)部署、运行程序。

按照第2讲所讲的方法部署、运行这个Web应用程序。本节的源代码放在本书附带光盘的code/ch5/I18N/目录中。

在只有默认资源文件的情况下,登录页面运行的结果如图5-1所示。
Eclipse整合SSH框架(Struts2+Spring+Hibernate+MySQL+Tomcat) SSh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。 阅读详情

相关推荐

十、强势股的起爆点:第三类买点的实战精解

本文深入解析强势股交易中的第三类买点(三买)实战技巧,涵盖两种经典模式:突破首个中枢后的回踩和底部反转后的直接脱离下跌中枢。通过详细案例和数据分析,揭示三买在捕捉主升浪起爆点时的黄金信号作用,帮助投资者优化风险收益比,提升短线交易成功率。

weixin_30260191的博客 311

maven+springMVC+hibernate项目搭建(二创建web项目demo)

eclipse创建基础web项目

bjjoy2009的博客 1436

告别低效!用ADS仿真带你一步步搭建一个两路对称Doherty功放(含设计要点)

本文详细介绍了如何使用ADS仿真工具一步步搭建两路对称Doherty功放,涵盖设计要点与优化技巧。通过解析负载调制机制、阻抗变换等核心原理,结合5G基站等应用场景,帮助工程师提升功放效率与线性度。特别针对GaN管件的Doherty功放,在3.5GHz频段实现高效性能。

weixin_31783001的博客 396

Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程

前言 确实好久没有写过了,一直以来把写博文当作自己学习的总结,当作做过的笔记,随时都可以拿出来看看。不过最近习惯了用OneNote和印象笔记,所以就很少在论坛写博文。但是偶尔看到几篇被转载了,也小小的虚荣了下。这种虚荣大神们已经习以为常,他们是不能理解的。 好吧,转入正题。 参加工作从事JavaWeb开发将近两年,也没有完整的搭建出一个SSH框架的项目,说出来确实有点不好意思,并且前一段一个...

897371388 532

在unity urp项目中 通过图片创建材质(透明光晕)

unity中通过图片创造材质(urp管道)

m0_49721415的博客 1539

保姆级教程:用CST 2023一步步复现一个1-8GHz Vivaldi天线(含参数优化与结果分析)

本文提供了一份详细的CST 2023教程,指导读者如何从零开始设计并优化1-8GHz Vivaldi天线。内容涵盖工程设置、参数化建模、仿真加速技巧以及性能优化策略,特别适合需要实现宽带天线设计的工程师和研究人员。通过实战案例,帮助用户掌握Vivaldi天线的核心设计要点和CST高级功能应用。

weixin_30800987的博客 618

Java Web整合开发实战-基于Struts 2+ Hibernate + Spring(1)- Eclipse测试Java Web程序

1 Eclipse配置tomcat 2 Eclipse测试Java Web程序 2.1 新建项目 2.2 创建 jsp 文件 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or

一角残叶的博客 184

uniapp:使用uni.request请求报错errMsg“:“request:fail abort statusCode:-1(uniApp使用uni.request向服务端接口发起请求失败报错)

解决request请求报错request:fail abort statusCode:-1,Uniapp打包到app后报错request:fail abort statusCode:-1,uniapp使用uni.request请求报错{“errMsg“:“request:fail abort statusCode:-1“}的解决办法,不是SSL证书问题,跳过ssl验证,解决https问题,Uniapp报错,小程序报错(含https解决方案)(真机预览问题)uni-app打包后不发请求的原因,uni-app真

✅ 精选推荐文章 3580

eclipse下搭建SSH整合环境(Struts2+Spring+Hibernate+maven)

1,创建一个maven工程,在选择Archetype时选择webapp: 2,下一步配置maven的pom.xml文件,获取依赖的jar包: ? 1 2 3 4 5 6 <!-- struts2核心包 --> dependency>     groupId>org.apache.s

在路上 689

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

|~~~热爱生活、努力学习的小伙汁~~~| 2108

趋势跟踪策略

/ 绘制K线图的下跌部分,使用绿色标记 stickline(close>=open,high,close,1,1,colorgreen);end // 在图表上绘制当前趋势的图标,如果trend=1或-1 drawicon(trend=1,stopprice,10);end // 绘制K线图的上涨部分,使用红色标记 stickline(close>=open,high,close,1,1,colorred);

2401_84919512的博客 354

Eclipse maven版ssh整合

环境:windows+Tomcat v8.0 +jdk1.8 开发工具:Eclipse 框架:spring + struts2(2.5.13) + hibernate 下面开始进入项目整合: 1,创建maven项目: 2 3 4 到这一步点击finish就行了!!! 开始搭建项目: pom.xml &lt;!--第一步就是配置maven-compiler-plugin插件--&gt; 注意:...

csdnlcw的博客 464

NVIDIA AI 学习与认证指南:从入门到精通

NVIDIA的AI学习与认证体系,凭借其先进的技术背景、丰富的课程资源以及强大的行业认可度,已成为AI学习者和从业者的宝贵资源。通过深入学习NVIDIA的课程和获得认证,学习者可以快速掌握最前沿的AI技术,提升自己的职业竞争力。从基础课程到专业认证,NVIDIA为不同层次的学习者提供了量身定制的学习资源,帮助他们掌握AI的核心技能,提升职业竞争力。是其中的一个亮点,它结合了信息检索与生成式AI的能力,使AI可以从外部知识库中实时提取信息,生成更具深度和准确性的内容。,帮助学习者快速掌握该领域的核心技术。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1878

eclipse搭建SSH框架详解

eclipse搭建SSH框架详解文章分类:Java编程SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题。下面我介绍一下SSH框架搭建的全过程。 第一步:准备工作。   下载好eclipse,Struts2,Spring,Hibernate。   1.eclipse:eclipse下载的时候建议下载JavaEE版的eclipse。              

silviamu的专栏 1161

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Windows下Java Web开发环境

概要  1.SSH开发相关软件及开发包下载 2.软件安装及相关设置 3.最简单的Web程序 1.软件下载  在D盘建一个目录JavaTools,用来存放下载的软件和开发包。(本教程将使用D盘,你也可以使用C盘或E盘)。下载软件的原则,有Zip版的不下载exe版的。 1)JDK:JDK 6 Update 7 Windows版  下载页面:http://java.sun.

小生我怕怕 821

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Maven整合SSH项目

一、开发环境准备 1、开发工具 1.1、JDK Version: JDK1.6.0_38 安装配置 1.2、Oracle Version: 10.2.0.5.0(select * from v$instance) 安装配置 1.3、Eclipse Version: Luna Release (4.4.0) 1.4、Tomcate Version

dulildx的专栏 2306

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

S2SH整合

转自:http://llying.iteye.com/blog/410201 Struts 2,Spring 2,Hibernate 整合 开发工具Eclipse 6.5/6.6 GA 1.首先创建一个web工程,我们暂且启明为s2sh 这里我们选择的是Java EE 5.0

guanghua2009的专栏 1566

java ee 互联网_Java EE互联网轻量级框架整合开发

Java EE互联网轻量级框架整合开发完整版下载。本光盘是《轻量级Java EE企业应用开发实战——Struts 2+Spring+Hibernate整合开发》一书的配书光盘,书中的代码按章、按节存放,即第2章、第1节所使用的代码放在codes文件夹中的02\2.1文件夹下,依此类推。有需要的朋友欢迎下载!!Java EE互联网轻量级框架整合开发光盘内容另:书中每份源代码也给出与光盘源文件的对应关...

weixin_35786770的博客 417

java培训计划_Java培训计划安排.ppt

培训计划 Java基本概念 JDK版本介绍 Java资源介绍 Java安装 安装目录介绍 Java环境配置 Java开发示例 Java语法简介 Eclipse与MyEclipse下载及安装 MyEclipse的基本概念、配置和使用 MyEclipse插件介绍 MyEclipse中新建项目 MyEclipse中版本控制插件使用 Java代码结构 Java面向对象-封装及实现 Java面向对象-继承及...

weixin_31541755的博客 1032

java软件工程师工作业绩_JAVA软件工程师简历自我评价

1/9JAVA软件工程师简历自我评价具有很强的团队精神,有良好的组织和协调能力,有强烈的集体荣誉感。自学能力强,喜欢钻研新技术,敢于面对和克服困难。熟练使用spring+struts+hibernate整合开发。熟练使用jsp、servlet、jstl、jdbc下的编程开发。熟练使用eclipseide开发工具,熟练掌握tomcat等web容器以及j2ee容器的配置以及部署,能够使用junit进行...

weixin_34175189的博客 1394

工作中所遇到的异常排错总结

1:关于注解的方式获取对象-jdk1.5以后,spring-2.5版本以后支持 2:内存溢出异常处理 1)查看eclipse的eclipse.init文件查看其内存 2)修改参数(window-preference-java-installed JRES-jdk1.6-edit(-Xms256m -Xmx512m)) JVM堆的设置时java虚拟机在程序执行时自动为程序所分配的空间,一般分

liyingying111111的专栏 688

Eclipse下搭建struts、spring、hibernate开发环境

开发环境的搭建,Myeclipse 下搭建struts+spring+hibernate 开发环境;记得刚学struts、Spring、hibernate三大框架时就为这些基本环境的搭建发愁,那是使用的myeclipse8.0版本的 减少了不少搭建环境的问题;现在使用低版本myeclipse 或者eclipse发现环境搭建很发愁啊;也有好多人问我在eclipse 下 怎么搭建 strtus

Veteran_的专栏 6391

Java 框架 Pro —SSH框架整合(eclipse、Struts2、Spring、Hibernate)

文章目录SSH框架整合1 导包(43个)2 单独配置Spring容器2.1 创建配置文件,并导入约束(4个)3 单独配置struts23.1 配置Struts2主配置文件3.2 配置struts2核心过滤器到web.xml4 Struts2与Spring整合4.1 导包(整合包)4.2 配置常量4.3 整合方案14.4 整合方案25 单独配置hibernate5.1 导入实体类&orm元数...

文泽路小男孩的博客 1146

搭建整合Struts2,Spring,Hibernate的Web开发框架

记录基于Maven和Eclipse的三大框架(Struts2、Spring、Hibernate)整合过程,最终提供一个Demo,方便日后的开发。

d7Derik的博客 756
上一篇: 用STRUTS实现国际化
下一篇: struts 基础
lele521
博客等级 码龄20年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值