2010.1.8文件上传下载,国际化

本文介绍了基于表单的文件上传和下载的实现方法,包括使用Apache组件处理FileItem,以及如何解决文件下载的安全控制和从任意位置提供数据。同时,讲解了Web应用的国际化,包括本地化概念、Java的国际化解决方案,以及Web应用程序如何获取客户端浏览器的本地信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   昨天晚上练习代码,遇到个错误,排了一个多小时才排出来。而且错误还十分可笑。今天早上郁闷,向老冯诉苦了下。

   老冯告诉我们,这样的情况很正常,在实际开发中就是这样——“20%的时间写代码,80%的时间来排错”! 此话经典,铭记!

 

   今天将的内容比之前两天要容易些,主要讲了web开发中文件的上传和下载,以及国际化。下面就来做今天的总结了。

 

  一. 基于表单的文件上传

     

       文件上传在web站点应用中是非常常见的一个功能,例如我们在邮箱中要上传邮件附件,在校内里上传个人相片等。这些上传功能,我们能看到的页面形式大致如下

           

上传页面

                 

 

              

                   

            此形式的上传都是基于表单的文件上传,因此一般要在相关的jsp页面中加入<input type="file" >标签,此外还要设置entype属性为multipart/form-data表示表单以二进制传输数据。

          

            然后便是利用apache公司出品的commons-fileupload 和commons-io组件在相关的servlet程序中实现表单文件上传的功能。

 

            FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提交的 request请求也就是一个FileItem的有序组合,FileUpload

组件可以解析该request,并返回一个一个的FileItem。而对每一个FileItem,FileUpload组件可以判断出它是普通form表单域还是文件file域,从而根据不同的类型,采取不同的操作--如果是

表单域,就读出其值,如果是文件域,就保存文件到服务器硬盘上或者内存中。

 

 

   二. 文件下载

              文件下载有两种方式:一种是直接一个超链接指向工程中的文件即可,这种下载的方式这所以可行,是靠浏览器自带有下载功能。第二种方式是用程序编码实现下载,其在web站点的应用更广泛,而且有如下两个有点:

                 可以增加安全访问控制,只对经过授权认证的用户提供下载
                 可以从任意位置提供下载的数据

             秀下笔记,看看该程序如何编写

            

*设置两个报头

 

当报出错误找不到类的时候,有一种可能是服务器没自动生成class文件的时候,到下面的页面挑上所有选项,让服务器重新找到开发工具。

 

 *获取输入流字节流

  

 *获取输出流

  

 *从输入字节流中读取信息写到输出字节流中

  

 *设置下载的文件名

*最后的效果

  

 

 三.文件上传下载的综合练习

    

    

1. 工程功能演示

    

 

2. 功能实现

 l 前期工作

      *在数据库中建立个表   

      *创建user.jsp

先处理上传

     *创建UserUploadServlet.java`-

 *解决乱码

 

 *定义存放普通表单域的map集合,在里面放入相关信息

 

*定义存放文件域的map集合,在里面放入相关信息

 

存入数据库

  *定义一个javabean.UserInfo,把页面的信息封装到其中

  *创建工厂类,调用dao层,将数据存入数据库  

  *dao.imp层实现功能

 

查看功能

*创建ListUserInfoServlet,调用dao层方法的查看功能    

* 在dao.impl层完成功能

*定义list.jsp显示查看功能。通过<c:choose>处理listnull情况

            

下载  

  还能用urlencoding解决

 *解码在apache-tomcat-6.0.20/conf/server

   

 *创建DownUseInfoServlet.java

                     在里面完成下载功能,并处理保存文件时会出现的中文乱码问题

 

 

    四.国际化

     1.基本概念

      软件的本地化:一个软件在某个国家或地区使用时,采用该国家或地区的语言,数字,货币,日期等习惯。
            软件的国际化:软件开发时,让它能支持多个国家和地区的本地化应用。使得应用软件能够适应多个地区的语言和文化风俗习惯。
            本地信息敏感数据:随用户区域信息而变化的数据称为本地信息敏感数据。例如数字,货币等数据。
            应用程序的国际化:就是在应用软件的设计阶段,使软件能够支持多个国家和地区的用户的使用习惯。
            国际化又称为 i18n:internationalization

 
       2.一个软件国际化的特征

         对于程序中的本地信息敏感的数据(日期,货币等)能根据当前所在的国家或地区的文化习惯进行显示
           对于文本元素(错误提示信息,状态信息等)不是直接写在应用程序中,而是存储在应用程序外部的资源文件中,在应用程序中通过程序代码来动态获得这些数据
           无需修改和重新编译程序就能支持新的国家或地区的用户使用

    3.java国际化解决方案

          文本信息不能硬编码在程序代码中,而是需要将它们从应用程序中分离出来,在软件运行时根据本地信息读取相应的文本内容进行显示,

             用资源包

            

 

资源包介绍

*所谓资源包就是*.proerties文件

*对应不同的信息要定义专门的资源包,当要执行的语言类别找不到对应的资源包则执行默认的资源包

*资源文件的命名

  

*文件放置位置,都放到src下(java应用工程还是javaweb工程)

*写资源文件时候,中文的资源文件,要到src文件夹下去改,否则会有乱码

       *读的时候用ResourceBundle类中的方法来获取资源包

 

 

*乱码处理,问题分析,超链接是get方式,会在查看页面出现的中文乱码该如何解决呢?

 

 

 

 

       

中文需要转化字符编码

*使用jdk下的native2ascii.exe

*改动资源文件后缀名

*写个批处理文件 run.bat,在里面设定好字符编码

*然后删除原资源文件

*设置环境变量里

       *以后点击run.bat文件,直接会生成一个资源文件   

    
            数值货币时间日期等本地敏感数据可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。                 

            Java中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中)

  l  LOCAL类代表一个特定的区域

      Locale locale=new Locale("zh","CN");

  l  DateFormat类转化日期/时间格式

*字符串转化为日期

  逆向思维。

  l  NumberFormat类数值格式转化

  l  MessageFormat类提供了一种参数替换模式字符串中的占位符的方式

  

     4.Web 应用程序的国际化

           l 要实现 web 应用的国际化,首先要获得客户端浏览器的本地信息。在 Servlet 程序中,调用 HttpServletRequest 对象的方法获得代表客户端本地信息的 Locale 对象

              *用jsp实现

              *用国际化标签库实现

 

 

 

   在做这个练习的时候,被里面的中文乱码的解决搞得有点晕,特此阅览了坏女杀手一遍专门说中文乱码的文章,感觉说得比较透彻了。中文乱码

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值