struts 国际化
国际化:i18n:internationalization,能够实现读取不同的资源文件显示不同的字符信息。以适应不同的地区和语言。
1:处理汉字显示:
使用命令:native2ascii 原文件名 新文件名
把汉字转化为ascii码
对于中文,资源文件查找的顺序是:
ApplicationResources_zh_cn.properties-->ApplicationResources_zh.properties-->ApplicationResources.properties
其他语言也是找带相应后缀的文件再找ApplicationResources.properties
2:jsp页面
方法1: Set charset in your JSP page: 在所有JSP页面里设定编码方式
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
方法2: Use filter to set charEncoding to get input from client 用filter设定获得用户输入内容的编码方式
3:在Internet 选项里,语言-->语言首选项设置语言
Tag Libraries -- Unit 5
HTML Tags
Bean Tags
Logic Tags
nested Tags
********************************************************************************
1. HTML Tags:
html:html html:base html:link
html:rewrite html:img html:form
html:text html:cancel html:reset
html:submit html:hidden html:checkbox
html:multibox html:radio html:select
html:file html:errors html:messages
******************************************
用于生成基本HTML元素的标签
******************************************
<html:link forward href page paramId paramName paramProperty name/>
生成 <a href /> 标签
will rewrite URL, add SessionID in URL if client turn off Cookie
1:外部完整的url连接
<html:link href="http://www.yahoo.com" > yahoo </html:link>
--> <a href="http://www.yahoo.com"> // !!!!note: full URL name
2:相对url连接
<html:link page="/my.do" > my page </html:link> //!!!! same web application
--> <a href="/yourWebapp/my.do"> my page </a>
3:相对url连接带参数
<html:link page="/your.do?para1=hello¶2=world" > Your page </html:link>
--> <a href="/yourWebapp/your.do?para1=hello¶2=world"> Your page </a>
4: 全局转发url连接
<html:link forward="success" > Success </html:link>
// only in <global> <forward> tag, !!!not in <action> <forward> tag
--> <a href="yourWebApp/success.jsp">
在struts-config.xml文件里:
<global-forward>
<forward name="success" path="/success.jsp" >
</global-forward>
5:带有页面变量的url连接
<% String s="hello";
request.setAttribute("stringBeanName", s);
%>
<html:link page="/his.do" paramId="param1" paramName="stringBeanName">
his page
</html:link>
--> <a href="/yourWebapp/his.do?param1=hello"> his page </a>
6: 带有javabean属性的url连接
<% Student st=new Student("zhang", 25);
request.setAttribute("student", st);
%>
<html:link page="/her.do" paramId="param1" paramName="student" paramProperty="age">
her page
</html:link>
--> <a href="/yourWebapp/her.do?param1=25"> her page </a>
7: 传递多个参数的url连接
<% HashMap map=new HashMap(); //URL has many parameters
map.put("name1", "Hello");
map.put("name2", 'world");
request.setAttribute("mapBean", map);
%>
<html:link page="/our.do" name="mapBean"> our page </html:link>
--> <a href="/our.do?name1=hello&name2=world"> our page </a>
-----------------------
在表单中上传文件的标签
<html:file property=" fileName" /> 生成<input type="file" name="fileName"/> 标签
//property for FormFile attribute of ActionForm
jsp:
<html:form action="myfile.do" method="post" enctype="multipart/form-data">
please select the file you would like to upload:
<html:file property="fileName" />
<html:submit />
</html:form>
Form:
public class MyForm extends ActionForm{
private FormFile fileName;
....
}
Action:
FormFile file = uploadfileForm.getFile();//得到上传文件
if(file==null){
return mapping.getInputForward();
}
String filename= file.getFileName();//得到文件名
uploadfileForm.setFilename(filename);
String size = Integer.toString(file.getFileSize())+"byte";//得到文件大小
uploadfileForm.setSize(size);
try {
InputStream is = file.getInputStream();//获得文件的输入流
String storepath = servlet.getServletContext().getRealPath("/filepuload");//获得存放路径
System.out.print(storepath);
OutputStream out = new FileOutputStream(storepath+"/"+filename);//获得文件输出流
int bytes=0;
byte [] buffer = new byte[8192];
while((bytes = is.read(buffer,0,8192))!=-1){
out.write(buffer,0,bytes);
}
out.close();
is.close();
file.destroy();//释放文件连接
------------------------------------------------
<html:errors property /> 输出错误信息
in jsp page: <html:errors property="propertyName1" />
--------------------
<html:messages property/> 输出信息
in page: <html:messages property="propertyName1" />
********************************************************************************
********************************************************************************
Bean Tags:
bean:cookie bean:header bean:parameter bean:page
*bean:message bean:resource bean:struts bean:include
*bean:define *bean:size *bean:write
*************************************************
检索HTTP请求信息或JSP隐含对象
*************************************************
----------------------------------------------------
<bean:parameter id* multiple name* value />
读取HTTP请求参数
Example1. <bean:parameter id="arg" name="fname" value="default" /> //!!!value -> default value
<bean:write name="arg" />
request: http://localhost:8080/mywebapp/mypage.jsp?fname=zhang
-----> zhang
Example2: <bean:parameter id="arg" multiple="yes" name="options" value="noarg" />
similar to
<% String[] arg=request.getParameterValues("options);
for (int i=0; i<arg.length;i++) {
out.writeln(arg[i]);
}
%>
http://localhost:8080/mywebapp/mypage.jsp?options=zhang&options=wang&options=chen
-----> zhang
wang
chen
------------------------------------------
**************************************************
访问WEB应用资源
***************************************************
<bean:message bundle key name property arg0, arg1/ >
Example1. key value from message-resources file
* label.hello=Hello, welcome to my page // in message-resources file
<bean:message bundle="special" key="label.hello" /> //in special resource bundle
-----> Hello, welcome to my page
* hello=Hello, {0} // in message-resources file
<bean:message bundle="special" key="hello" arg0="how are you"/>
-------> Hello, how are you
Example2. value of key is from name: String bean
<% request.setAttribute("myString", "label.hello"); %>
<bean:message name="myString" />
-----> Hello, welcome to my page
Example3. value of key is from name: Java bean
<% Mybean bean=new Mybean();
bean.setValue("label.hello);
request.setAttribute("mybean", bean);
%>
<bean:message bundle="special" name="mybean" property="value" />
-----> Hello, welcome to my page
---------------------------------
<bean:include id forward page href/>
把其他WEB资源的内容存放在一个变量里, 而不是直接显示在页面上(可以通过<bean:write> 显示)
Example1: <bean:include id="test" forward="banner" /> // !!!in <global-forwards> tag
<bean:write name="test" filter="false"/>
Example2: <bean:include id="test" page="/banner.jsp" />
<bean:write name="test" filter="false"/>
Example2: <bean:include id="test" href="yourWebApp/banner.jsp" />
<bean:write name="test" filter="false"/>
*******************************************
定义或输出JavaBean
*******************************************
<bean:define id* toScope name property type scope value />
定义一个变量
Example1: <bean:define id="myId" value="hello, world" toScope="session"/>
<bean:write name="myId" scope="session" />
-----> hello, world
<% session.setAttribute("myId", "hello, world");
out.println(session.getAttribute("myId");
%>
-----------------------
<bean:size id name scope />
获得Map, Collection或数组的长度
Example1: <% List l=new Vector();
l.add("hello");
l.add("world");
request.setAttribute("list", l);
%>
<bean:size id="length" name="list" scope="request"/>
<bean:write name="length" />
-> 2
--------------------------------------------
<bean:write name property format filter scope />
输出某个Bean或它的属性的内容, format 用于设置输出数据的格式, filter=true把输出内容中的特殊HTML符号作为普通字符来显示.
Example1: <% request.setAttribute("pi", Float.valueOf("3.14159"));%>
<bean:write format="#.##" name="pi" scope="request" />
-> 3.14
<% request.setAttribute("str", "<h3> hello,world </h3> "); %>
<bean:write name="str" scope="request" filter=true/>
-> <h3> hello,world </h3>
*************************************************************************************************
*************************************************************************************************
Logic tags:
logic:equal logic:notEqual logic:lessThan
logic:lessEqual logic:greaterThan logic:greaterEqual
logic:match logic:notmMatch
logic:empty logic:notEmpty
logic:present logic:notPresent
logic:messagesPresent logic:messagesNotPresent
logic:iterate
logic:forward logic:redirect
******************************************
进行循环遍历的logic标签
在默认情况下, 将依此在page, request, session, application范围里寻找name属性指定的变量. 此外, 也可以通过scope属性来指定变量的存在范围.
******************************************
<logic:iterate id indexId name offset length > offset: 开始位置
<%
Vector v = (Vector)request.getAttribute("alluser");
request.setAttribute("alluser",v);
%>
<TABLE>
<TR>
<TD>no</TD>
<td>id</td>
<TD>name</TD>
<TD>password</TD>
<TD>select</TD>
</TR>
<logic:iterate id ="alluser" indexId = "ind" name="alluser">
<tr>
<TD>
<bean:write name="ind"/>
</TD>
<TD>
<bean:write name="alluser" property="id"/>
<input type="hidden" name="id" value='<bean:write name="alluser" property="id"/>'/>
</TD>
<TD>
<bean:write name="alluser" property="name"/>
</TD>
<TD>
<bean:write name="alluser" property="password"/>
</TD>
<TD>
<html:submit>delete</html:submit>
</TD>
</tr>
</logic:iterate>
</TABLE>
</body>
分享到:
相关推荐
对于初学者,"struts2.chm"提供了入门指导;对于有一定经验的开发者,"struts2-tags-API.chm"和"struts2 2.chm"将帮助他们更好地利用Struts2的高级特性,提升开发效率。总的来说,这个压缩包是学习和开发Struts2应用...
在入门Struts2时,首先需要了解其基本概念和目录结构。Struts2的框架设计理念是提供一个半成品,即已经包含了大部分通用功能,开发者只需要关注与业务相关的部分。在提供的版本struts-2.3.15.3中,有两个示例应用:...
"struts2-blank"项目是一个基础的Struts2示例代码,可以帮助初学者快速理解和入门Struts2框架。 在Struts2框架中,核心组件包括Action、Interceptor、Result、ValueStack等。Action是业务逻辑的执行者,Interceptor...
这个"Struts2-入门学习"的主题将引导你了解Struts2的基础知识,包括其架构、核心组件、配置以及如何在实际项目中应用。 Struts2的核心组件包括: 1. **Filter Dispatcher**:这是Struts2框架的入口点,它是一个...
在这个"struts2-例子"压缩包中,我们主要关注的是一个名为"struts2-blank"的项目,这是一个基础的、空白的Struts2应用模板,用于新手快速入门和理解框架的基本工作原理。 首先,Struts2的核心在于Action类,它是...
这些示例可以帮助开发者快速入门,了解如何在实际项目中应用Struts 2框架。 6. **学习与开发**: 对于开发者来说,熟悉Struts 2.3.14-Pro意味着要掌握Action类、配置文件(struts.xml)、拦截器、结果类型、动态...
入门程序"应该是针对初学者设计的一系列教程,旨在帮助开发者快速理解并掌握Struts2的基础用法。 在Java Web开发中,Struts2框架提供了良好的架构模式,可以有效地组织代码,提高开发效率,并且它支持多种视图技术...
在本学习资料中,初学者将能深入理解Struts2的核心概念和工作原理,从而轻松入门。 Struts2框架的核心功能包括: 1. **请求分发**:Struts2通过Action类来处理HTTP请求。每个Action类对应一个业务逻辑,接收请求后...
在"Struts2 入门\struts2基本jar包"目录下,你可以找到一组基础的jar包,这些是学习和搭建Struts2入门级应用所需的基本组件。它们包括了处理HTTP请求、映射请求到Action、视图渲染等功能的关键类。通过这些基本jar包...
这个入门例子是专为初学者设计的,旨在帮助理解如何在Eclipse集成开发环境中配置和运行一个基本的Struts2项目。在Eclipse中搭建Struts2环境涉及多个步骤,包括设置JDK、安装插件、创建项目以及配置相应的库和文件。 ...
本教程将引导你入门Struts2的国际化功能,这是一项允许应用程序支持多种语言的重要特性。 在Struts2中实现国际化,首先你需要创建资源文件,这些文件通常以`.properties`为扩展名,例如`messages.properties`和`...
1. **快速入门**:这通常是一份简明教程,帮助开发者快速了解Struts2的基本概念和配置,如Action、Result、Interceptor等,并指导如何搭建第一个运行的Struts2应用。 2. **使用文档**:这部分详细介绍了如何在实际...
Struts1-2 和JSTL 帮助文档以及Struts入门的图书,可以轻松学习Struts,及Struts和Jstl标签库
11. ** strut2-docs 中的详细内容**:压缩包中的文档可能包括框架概述、快速入门指南、配置参考、API文档、插件介绍、示例代码和最佳实践等多个部分,为开发者提供全方位的学习材料。 通过阅读这些文档,开发者能够...
这个"starting-struts2-chinese.rar"压缩包文件包含了一份中文版的"starting-struts2-chinese.pdf"文档,很显然是为帮助初学者理解和入门Struts2框架而准备的。 Struts2的核心是模型-视图-控制器(MVC)设计模式,...
此外,描述中提到的"Struts2 入门\struts2基本jar包"目录,通常会包含一些基础的入门示例和教程所需的jar包,这些可能包括了用于演示基本功能和配置的简化版本,如简单的Action类、配置文件、以及其他必要的依赖。...
总之,"struts-2.3.12.rar"是一个宝贵的资源,对于想要学习或深入了解Struts 2框架的开发者来说,无论是入门还是深入研究,都有极大的价值。通过这个压缩包,你可以全面地了解并掌握Struts 2的方方面面,提升你的Web...
在"struts2-easyui"的例子中,我们看到的是一个基础的快速入门教程,它演示了如何将这两个技术整合在一起,实现数据的增删改查功能。下面将详细解释这个组合的应用场景、工作原理以及相关的知识点。 1. **Struts2...
这个DEMO旨在帮助开发者快速理解和应用Jcaptcha4Struts2,为初学者提供了一个基础入门级的学习资源。 Jcaptcha4Struts2是基于Jcaptcha(Just Another CAPTCHA)的Struts2插件,它将Jcaptcha的功能无缝集成到Struts2...