上传、下载、国际化

来源:互联网 发布:淘宝柳丝模特 编辑:程序博客网 时间:2024/06/05 21:49

上传、下载、国际化

一、上传

1.需要注意的:

1.1 表单的method属性应该为post方法,不能用get方法

1.2 表单enctype属性应该设为multipart/from-data

1.3 表单action属性应该设为请求的servlet的路径

1.4 一次性上传多个文件需要多个name不同的“<input type=”file”>

2.依赖的库

2.1 commons-fileupload.x.x.jarx.x为版本号)

2.2 commons-io-x.x.jarx.x为版本号)

3.代码

3.1 html代码

<!--  上传文件的两个条件,1.必须是post请求 2.enctype="multipart/form-data""  注意:在servlet中使用request.getParameter(“userName”)无法获取到值  -->    <form action="UploadServlet" method="post" enctype="multipart/form-data">    <input type="text" name="txt" /><br/>    <input type="file" name="myfile" /><br/>    <input type="file" name="myfile1" /><br/>    <input type="submit" value="立即上传"/>    </form>


 

3.2 java代码

boolean bool = ServletFileUpload.isMultipartContent(request);//检查是否有文件上传请求if(bool){//创建解析文件上传的工厂类DiskFileItemFactory factory = new DiskFileItemFactory();//用于从请求中解析文件ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding("utf-8");try {//解析是文本输入还是文件List<FileItem> itmes = upload.parseRequest(request);for (FileItem fi : itmes) {//标识是文本输入if(fi.isFormField()){System.out.println(fi.getFieldName()+"----"+fi.getString());}else{//取文件名String fileName = fi.getName();//取流InputStream is = fi.getInputStream();String destPath=SAVE_DIR+"/"+fileName;System.out.println(destPath);FileOutputStream fs = new FileOutputStream(destPath);byte[] bt = new byte[1024];int num=-1;while((num=is.read(bt))!=-1){fs.write(bt, 0, num);}  fs.flush();fs.close();is.close();  }}} catch (FileUploadException e) {e.printStackTrace();}}


 

二、下载

1.需要注意的:

1.1 表单的method属性最好为为get方法

2.html代码

<a href=”请求下载的serlvet地址”>下载</a>

3.java代码

static String SAVE_DIR = "E:/sc"; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");//文件下载输出流OutputStream os = response.getOutputStream();String fileName="1.jpg";if(request.getParameter("fileName")!=null){fileName=request.getParameter("fileName");}//告诉浏览器下载的名字response.setHeader("Location",URLEncoder.encode(fileName,"utf-8"));        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName,"utf-8"));        //将文件的流写入outputstream        FileInputStream fis = new FileInputStream(SAVE_DIR+"/"+fileName);        //设置长度为文件长度,一次读完        byte [] bt = new byte[fis.available()];        fis.read(bt);                os.write(bt);                fis.close();        os.close();}


三.国际化

一:所谓国际化就是一个网站提供了不同版本的语言,根据访问者的语言或国籍,显示给该用户该国家的语言。

二:区域设置(locale):这是一个特殊的文化或地理区域。它通常指语言符号后跟一个下划线和一个国家符号。例如 “en_US” 表示针对US 的英语区域设置

三:servlet国际化

Servlet 可以根据请求者的区域设置拾取相应版本的网站,并根据当地的语言、文化和需求提供相应的网站版本。以下是request 对象中返回Locale 对象的方法。

   java.util.Locale request.getLocale()

  重要的区域设置方法,您可以使用它们来检测请求者的地理位置、语言和区域设置。

    //根据区域设置获取当地时间

    Locale locale = request.getLocale( );

    String date = DateFormat.getDateTimeInstance(

                                  DateFormat.FULL,

                                  DateFormat.SHORT,

                                  locale).format(new Date( ));

完全依赖java国际化 步骤如下

1.定义资源文件 BASENAME_语言代码_国家码.properties

2.通过request.getLocale()获取Locale对象

3.通过ResourceBundle resb1 = ResourceBundle.getBundle(" BASENAME ", request.getLocale());

4.通过resb1.getString(key值”)获取数据

 

原创粉丝点击