JavaWeb -- Struts2 ResultType细化, 国际化
1. ResultType细化
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
示例action
/**
* ResultTypeAction
*/
public class ResultTypeAction extends ActionSupport {
private static final long serialVersionUID = -6933309304624396640L; private String name = "中文" ; private String saveFileName ; /**
* 只能请求转发到jsp或者是servlet.
*/
public String dispatcher() {
System.out.println("dispatcher"); return "dispatcher";
} /**
* 重定向到任意的url.
*/
public String redirect() {
System.out.println("redirect");
return "redirect";
} /**
* 重定向action的好处在于不需要硬编码url地址,即不需要绑定url模式.只能重定向到当前应用中的
* 某个action.
*/
public String redirectAction() {
System.out.println("redirectAction");
return "redirectAction";
} /**
* 得到输入流
* @throws FileNotFoundException
*/
public InputStream getIs() throws FileNotFoundException{
return new FileInputStream("d:/sunset.jpg");
} /**
* 下载
*/
public String stream(){
try {
saveFileName = URLEncoder.encode("日落", "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "stream" ;
} /**
* 链化action,请求转发到另外一个action,在同一个线程中,数据共享
*/
public String chain(){
System.out.println("chain");
return "chain" ;
} /**
* 输出纯文本
*/
public String plainText(){
System.out.println("plainText");
return "plainText" ;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSaveFileName() {
return saveFileName;
} public void setSaveFileName(String saveFileName) {
this.saveFileName = saveFileName;
}
}
struts配置文档 rt.xml
<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="RtPkg" namespace="/rt" extends="struts-default">
<action name="ResultTypeAction_*" class="cn.itcast.struts2.resulttype.ResultTypeAction" method="{1}">
<result name="dispatcher" type="dispatcher">/login.jsp</result>
<!--调用action中的数据 用 ${...}-->
<result name="redirect" type="redirect">/ui/UiAction_saveData.do?name=${name}</result>
<result name="redirectAction" type="redirectAction">
<param name="actionName">UiAction_saveData</param>
<param name="namespace">/ui</param>
<param name="name">${name}</param>
<param name="age">20</param>
</result>
<result name="stream" type="stream">
<param name="contentType">image/jpeg</param>
<param name="contentDisposition">
attachment;filename="${@java.net.URLEncoder@encode('日落', 'UTF-8')}.jpg"
</param>
<param name="inputName">is</param>
</result>
<result name="chain" type="chain">
<param name="actionName">UiAction_saveData</param>
<param name="namespace">/ui</param>
</result>
<result name="plainText" type="plainText">
<param name="location">/ipmsg.log</param>
<param name="charSet">GBK</param>
</result>
</action>
</package>
</struts>
2. 国际化
显示页面
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>reg.jsp</title>
</head>
<body>
<s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml">
<!--国际化显示语言选择-->
<s:select name="request_locale"
list="#{@java.util.Locale@CHINA:@java.util.Locale@CHINA.getDisplayName(@java.util.Locale@CHINA),
@java.util.Locale@TAIWAN:@java.util.Locale@TAIWAN.getDisplayName(@java.util.Locale@TAIWAN),
@java.util.Locale@US:@java.util.Locale@US.getDisplayName(@java.util.Locale@US),
@java.util.Locale@UK:@java.util.Locale@UK.getDisplayName(@java.util.Locale@UK),
@java.util.Locale@JAPAN:@java.util.Locale@JAPAN.getDisplayName(@java.util.Locale@JAPAN)}"
listKey="key"
listValue="value"
onchange="this.form.submit();"
value="locale">
</s:select>
<!--国际化显示 提示信息-->
<s:textfield name="name" key="label.name" />
<s:submit />
</s:form>
</body>
</html>
语言资源文件放在action同目录下, 命名格式 action同名 + 国家代码 + 语言代码
I18nAction_zh_CN.properties
label.name=userName_zh_CN
I18nAction_en_US.properties
label.name=userName_en_US
JavaWeb -- Struts2 ResultType细化, 国际化的更多相关文章
- struts2中的国际化
[java] view plaincopy 实现struts2中国际化其实非常简单 首先,struts2中的国际化是通过资源文件来配置的. 资源文件分为:action类级,package类级,还有we ...
- Struts2学习笔记 国际化(Internationalization)
概述 国际化(Internationalization),通途的讲,就是让软件实现对多种语言的支持.可以通过简单的设置就可以从一种语言切换到另一种语言.用的最多的地方就是在应用程序的界面表示上.我们经 ...
- Struts2 资源配置文件国际化
Struts2 资源配置文件国际化 Struts2资源文件的命名规范:basename_language_country.properties Struts2国际化如果系统同时存在资源文件.类文件,系 ...
- Struts2入门(六)——国际化
一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...
- JavaWeb之多语言国际化
这周打算把国际化.JDBC和XML学习一下,从下周就开始学习三大框架,再坚持一个半月吧就能入门JavaWeb了,上周周末两天过的真是生不如死,两天坐在家里,醒来就写博客,原本在公司也自己操作了一遍,其 ...
- Struts2之i18N国际化
对于i18n其实没有太多内容,一般的公司用不到这些内容,除非是跨国公司,但即便是跨国公司也不一定会使用i18n来进行国际化处理,所以本篇内容仅供大家了解,不做深入的探讨,希望通过本篇内容,可以帮助大家 ...
- java struts2入门学习---国际化
一.国际化的概念 1.不同国家的人访问同一个网站,显示的语言不同. 2.对JSP页面进行国际化 属性(properties)文件命名规则:基名---语言--国家如, message_zh_CN.pro ...
- 超全面的JavaWeb笔记day20<监听器&国际化>
JavaWeb监听器 三大组件: l Servlet l Listener l Filter Listener:监听器 1. 初次相见:AWT 2. 二次相见:SAX 监听器: l 它是一个接口,内容 ...
- JavaWeb -- Struts2 验证框架
1. 验证框架 示例 表单提交Jsp, reg.jsp <%@ page language="java" contentType="text/html; chars ...
随机推荐
- js function,prototype,sub.
Ojbect 和Function 与普通函数和实例对象 1.实例对象的proto 指向构造函数的原型对象 2.实例对象的proto 指向Ojbect的原型 3.所有函数的proto 都指向Functi ...
- Java 语言基础之语句
程序的四种流程控制结构: 顺序结构 判断结构 : if 语句 选择结构 : switch 语句 循环结构 : while 语句, do...while 语句, for 语句 以下主要分析循环结构: w ...
- MySQL(多表的表记录的查询)
一.外键约束 1.创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMAR ...
- Drawable.Callback
一.介绍 public abstract void invalidateDrawable (Drawable who) Called when the drawable needs to be re ...
- 教你高速入门Excel-宏与VBA(续)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/small_baby01/article/details/24028407 引言 通过 ...
- Android View学习Tips
1.Canvas.save()和Canvas.restore() canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的.这里 ...
- android学习四---Activity和Intent
1.android项目资源深入了解 在深入学习android之前,先好好玩玩手机上的应用,大部分程序都有一个图标,点开图标,程序启动,一定时间后,程序会跳转到第一个界面,比如手机QQ,点开图标,会跳出 ...
- go——并发
并发与并行的区别: 并发:逻辑上具备同时处理多个任务的能力. 并行:物理上在同一时刻执行多个并发任务.通常都会说程序是并发设计的,也就是说它允许多个任务同时执行,但实际上并不一定真在同一时刻发生.在单 ...
- s5_day2作业
# 1:编写for循环,利用索引遍历出每一个字符 # msg = 'hello egon 666' # for i in range(len(msg)): # print(i,msg[i]) # 2: ...
- Java集合(9):ConcurrentHashMap
一.ConcurrentHashMap介绍 我们可以在单线程时使用HashMap提高效率,而多线程时用Hashtable来保证安全.但是,HashMap中未进行同步考虑,而Hashtable则使用了s ...