Stuts高级应用

Struts的国际化
本地化和国际化的概念
Java对国际化的支持
Struts框架对国际化的支持

本地化和国际化的概念
在过去,软件开发者在开发应用程序时,将注意力集中于实现具体的业务逻辑。软件面向的用户群是固定的,软件只需要支持一种语言。如今,随着跨国业务的迅猛发展,需要同一个软件同时支持多种语言和国家。
国际化[Internationalization](简称为I18N)指的是在软件设计阶段,就应该使软件具有支持多种语言和地区的功能。软件的本地化与国际化的区别如下图:


Java对国际化的支持

Locale类
java.util.Locale类是最重要的Java国际化类,在Java语言中,几乎所有对国际化和本地化的支持都依赖于这个类。Locale类的实例代表一个特定的语言和地区。
ResourceBundle类
java.util.ResourceBundle类提供存放和管理与Locale相关的资源的功能。这些资源包括按钮上的文字、状态信息、图片名、错误信息和网页标题等。
ApplicationResources_en.properties
hello=Hello World!
ApplicationResources_zh_CN.properties
hello=你好,世界!

<html:form action="/selectLocale">
<html:select property="locale">
<html:option value="en">英文</html:option>
<html:option value="zh_CN">中文</html:option>
</html:select>
<html:submit>go</html:submit>
</html:form><hr>
<bean:message key="hello" />

SelectLocaleForm selectLocaleForm = (SelectLocaleForm) form;
setLocale(request, new Locale(selectLocaleForm.getLocale()));
return mapping.getInputForward();

Struts实现文件上传
举例:
ActionForm
package form;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class UploadForm extends ActionForm {
private FormFile file;
private int size;
private String name;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
……
}

Action里要写的
UploadForm uploadForm = (UploadForm) form;
String dir=servlet.getServletContext().getRealPath("/file");
FormFile file=uploadForm.getFile();
if(file==null){
return mapping.getInputForward();
}
uploadForm.setName(file.getFileName());
uploadForm.setSize(file.getFileSize());
InputStream in=file.getInputStream();
OutputStream out=new FileOutputStream(dir+"/"+uploadForm.getName());
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.close();
in.close();
file.destroy();
return mapping.findForward("ok");

JSP
upload.jsp
<html:form action="/upload" enctype="multipart/form-data">
选择文件:<html:file property="file"/><br/>
<html:submit>上传</html:submit>
</html:form>

up_ok.jsp
<logic:notEmpty name="uploadForm" property="name">
<h1>文件上传成功</h1><hr>
文件名称:<bean:write name="uploadForm" property="name"/><br>
文件大小:<bean:write name="uploadForm" property="size"/>字节<br>
<hr>
</logic:notEmpty>
<html:link href="index.jsp">返回</html:link>

struts-config.xml
<struts-config>
<form-beans>
<form-bean name="uploadForm" type="form.UploadForm" />
</form-beans>
<action-mappings>
<action attribute="uploadForm"
input="/upload.jsp"
name="uploadForm"
path="/upload"
scope="request"
type="action.UploadAction"
validate="false">
<forward name="ok" path="/up_ok.jsp" />
</action>
</action-mappings>
</struts-config>

Struts实现文件下载

download.jsp
<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.io.File"%>
<html>
<head><title></title></head>
<body>
<%
File file = new File(application.getRealPath("/file"));
String[] fileNames = file.list();
for (int i = 0; i < fileNames.length; i++) {
String fileName=java.net.URLEncoder.encode(fileNames[i],"gbk");
%>
<a href="download.do?fileName=<%=fileName%>"><%=fileNames[i]%></a>
<br>
<%}%>
</body>
</html>
DownloadAction.java
String filename = request.getParameter("fileName");
filename = new String(filename.getBytes("iso_8859_1"), "gbk");
String path = servlet.getServletContext().getRealPath("/") + "file/" + filename;
response.reset();
response.setContentType("application/x-msdownload;charset=gbk");
filename = java.net.URLEncoder.encode(filename, "UTF-8");
response.setHeader("Content-Disposition", "filename=" + filename);
InputStream in = new FileInputStream(path);
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.close();
in.close();
return null;

struts-config.xml
<struts-config>
<action-mappings>
<action path="/download" type="action.DownloadAction" />
</action-mappings>
</struts-config>

 

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值