博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Web编程的主要组件技术——Struts的高级功能
阅读量:4358 次
发布时间:2019-06-07

本文共 3681 字,大约阅读时间需要 12 分钟。

参考书籍:《J2EE开源编程精要15讲》

 

Struts对国际化的支持

  "国际化"(I18N)指一个应用程序在运行时能根据客户端请求所来的国家/地区、语言的不同显示不同的用户界面。要用Struts实现国际化,所要用的各种语言版本的"标签"信息存放在不同的属性文件中,每个文件对应一个语言版本。文件名后缀必须为properties,前缀名由开发者确定,其中的语言种类字段必须是有效的ISO(International Standardization Organization,国际标准化组织)语言代码,如:汉语-Zh、英语-En等。文件名前缀中默认(书上说"默认",但我感觉应该是"没有"才对)语言代码的为默认属性文件。当系统找不到与客户端请求的语言属性匹配的属性文件时,则使用该默认属性文件。

  对《Struts入门》中的登录系统进行国际化处理

  1) 首先创建英文和中文版的资源文件

  ApplicationResources.properties

1 title.login=Login Page2 label.username=Input your username3 label.password=Input your password4 item.submit=Submit5 item.reset=Reset6 message.success=you're successful to login in.7 message.failure=you fail to login
View Code

  ApplicationResources_zh.properties

1 title.login=\u767B\u9646\u9875\u97622 label.username=\u59D3\u540D3 label.password=\u5BC6\u78014 item.submit=\u767B\u96465 item.reset=\u91CD\u7F6E6 message.success=\u4F60\u5DF2\u6210\u529F\u767B\u96467 message.failure=\u4F60\u767B\u9646\u5931\u8D25
View Code

  PS:在Myeclipse中新建ApplicationResources_zh.properties,在编辑区选择Properties窗口,添加完键值对后,自动将中文转码

 

  2) 在struts-config.xml中进行配置

  <message-resources parameter="struts/ApplicationResources" /> (parameter属性取决于属性文件在工程中的位置,此处文件在struts包内)

 

  3) 修改页面,利用<bean:message>标记从资源文件中读取标签信息代替原来的字符文本

1 <%@ page language="java" pageEncoding="UTF-8"%> 2 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>  3 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 4   5   6      7         <bean:message key="title.login"/> 8      9     10         
11
:
12
:
13
14
15
16
17 18
View Code

  当只有默认资源文件的情况下,登陆页面显示英文;当加入中文版资源文件后,登陆页面显示中文

 

DispatchAction类

  通常一个Action类中只完成一个业务操作(execute(),不过其实能在execute()方法中根据传进参数的不同调用不同的方法),创建一个扩展DispatchAction的子类,不必覆盖execute()方法,而是创建一些实现具体业务逻辑操作的方法,这些方法与execute()方法有相同的参数和返回值,如

1 public class MyDispatchAction extends DispatchAction { 2     public ActionForward add(ActionMapping mapping, ActionForm form, 3             HttpServletRequest request, HttpServletResponse response) { 4         // TODO Auto-generated method stub 5         return mapping.findForward("add"); 6     } 7     public ActionForward edit(ActionMapping mapping, ActionForm form, 8             HttpServletRequest request, HttpServletResponse response) { 9         // TODO Auto-generated method stub10         return mapping.findForward("edit");11     }12 }
View Code

  在配置DispatchAction类时,需要指定parameter属性为method

  当编写触发DispatchAction的代码时,不仅指明映射路径,还需要加上一个名为method的参数,如

  http://localhost:8080/login/users?method=add

  调用对应DispatchAction的add方法

 

动态ActionForm

  如果ActionForm对应的HTML表单添加或删除属性,ActionFrom类就可能需要修改重新编译,于是引入动态ActionForm(DynaActionForm)的概念。动态ActionForm允许用户无须为应用程序的每一个HTML表单创建具体的ActionForm类。

  动态ActionForm支持在Struts配置文件struts-config.xml中完成ActionForm的全部配置,无须编写额外Java代码。如:

1 
2
3
4
5
6
View Code

  <form-bean>元素的type属性设置为DynaActionForm或其子类。<form-bean>中包含<form-property>子元素标记动态表单的属性,type属性指定了属性类型,属性类型必须是标准Java类,并使用它们的包装类,如int-Integer,long-Long,float-Float,double-Double,boolean-Boolean。

  当需要添加新类型时,只需要修改配置文件()。在Action中访问动态ActionForm

1 DynaActionForm loginForm = (DynaActionForm) form;2 String username=(String)loginForm.get("username");3 String password=(String)loginForm.get("password");
View Code

 

Validator验证框架

  通过配置验证规则实现验证功能,不需要编写代码,能最大限度的重用同一个验证规则。需要用到validator-rules.xml和validation.xml文件,validator-rules.xml文件包含了一组通用的验证规则,一般不需要修改,直接部署在相应的WEB-INF文件夹中即可;validation.xml由开发者自行规定。

  详情请见:

    

 

国际化示例 简单登陆系统:

 

转载于:https://www.cnblogs.com/cqq626/p/4324236.html

你可能感兴趣的文章
在OS X 10.11 中使用 "apue.h" (3rd Edition)
查看>>
mysql 批量插入更新
查看>>
ubuntu 实用命令收集
查看>>
[算法]分治算法(Divide and Conquer)
查看>>
mssql格式化工具——SQL PRETTY PRINTER
查看>>
datagrid删除按钮
查看>>
Redis高级进阶(一)
查看>>
地图坐标助手-开发总结
查看>>
Android资源--颜色RGB值以及名称及样图
查看>>
ORA-32001:write to SPFILE requested but no SPFILE is in use
查看>>
PhysX入门教程(全)
查看>>
ASP.NET XML与JSON
查看>>
java.lang.Class.getResource()这哥个方法主要是做什么用
查看>>
Codeforces 948D Perfect Security 【01字典树】
查看>>
android中通过ServerSocket创建端口问题
查看>>
fieldset、legend、display html元素
查看>>
IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
查看>>
JavaWeb学习-Tomcat
查看>>
MySQL 事务与锁机制
查看>>
优秀程序员==工作时间长的程序员么?
查看>>