码迷,mamicode.com
首页 > 其他好文 > 详细

Struts(十一)Struts2的 命名空间与各种配置详解

时间:2015-11-10 07:01:35      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

1.package元素的abstract属性表示该包是抽象的,不能直接使用,需要由子包几层才能使用。struts-defult这个package就是abstract的,因此需要我们继承这个包来使用。

2.命名空间,package元素的namespace属性起到命名空间分割的作用。通常将namespace的属性值定义成页面所在的目录名。name属性会被子包用到。namespace是路径名。最后的访问链接:http://localhost:8080/struts2/hello/login.jsp

<package name="frist" extend="struts-defult" namespace="/hello">

 

3.文件上传,进行文件上传时,必须将表单的method属性设置为post,将enctype属性设为multipart/form-data

例子:fileload.jsp

<body>
    <form action="fileuploadResult.jsp" method="post" enctype="multipart/form-data">
        username:<input type="text" name="username" ><br>
        file:<input type="file" name="file"><br>
        <input type="submit" value="sumbit">
        
    
    </form>

fileuploadResult.jsp

<body>
    <%
        InputStream is = request.getInputStream();
        
        BufferedReader br = new BufferedReader(new InputStreamReader(is));//字符流与字节流的桥接
        
        String buffer = null;
    
        if(null != (buffer=br.readLine()))
        {
            out.print(buffer+"<br>");
        }
        
        br.close();
        is.close();
    
    
    %>
  </body>

4.处理文件上传fileupload组件

我们主要使用Commons-fileupload.jar中的类,commons-io是提供流服务用的,我们没有对它进行操作。

 

  • FileItem 类 用来封装表单中的元素和数据。
  • ServletFileUpload类 处理表单数据,将数据封装到 FileItem 对象中。

  • DiskFileItemFactory类 设置FileItem 对象的工厂,可以设定缓冲区大小和存放临时文件目录。
  • ServletFileUpload 处理上传的文件的数据,优先保存在缓冲区,如果数据超过了缓冲区大小,则保存到硬盘上,存储在DiskFileItemFactory指定目录下的临时文件。数据都接收完后,它再在从临时文件中将数据写入到上传文件目录下的指定文件中,并删除临时文件。

fileload.jsp

 <form action="FileuploadServlet1" method="post" enctype="multipart/form-data">
        username:<input type="text" name="username" ><br>
        file:<input type="file" name="file"><br>
        file2:<input type="file" name="file2"><br>
        <input type="submit" value="sumbit">
        
    
    </form>

FileuploadServlet1

public class FileuploadServlet1 extends HttpServlet
{
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        request.setCharacterEncoding("utf-8");
        DiskFileItemFactory factory = new DiskFileItemFactory();
        
        String path = request.getRealPath("/fileupload");//设置文件上传的位置
        
        factory.setRepository(new File(path));//设置临时文件目录
        factory.setSizeThreshold(1024*1024);//设置默认文件的大小
        
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<FileItem> list = null;
        try
        {
            list = (List<FileItem>) upload.parseRequest(request);//解析request请求
        }
        catch (FileUploadException e1)
        {
            e1.printStackTrace();
        }
        try
        {
            for(FileItem item:list)//FileItem包含了文件本身与文本域
            {
                String name = item.getFieldName();//获得name属性的值
                
                if(item.isFormField())//判断是否是文本域
                {
                    String value = item.getString();//获得value属性的值
                    
                    System.out.println(name+":"+value);
                    
                    request.setAttribute(name,value);
                }
                else //为文件本身
                {
                    String value = item.getName();//对于大部分浏览器获得文件名,个别浏览器获得路径
                    
                    int strat = value.lastIndexOf("\\");//String 在此实例内的最后一个匹配项的索引位置。
                    String fileName = value.substring(strat+1);//从此实例检索子字符串。子字符串从指定的字符位置开始。
                    
                    request.setAttribute(name,value);
                    
                    item.write(new File(path,fileName));//写入文件
                }
            }
        }
        catch(Exception e)
        {
             e.printStackTrace();
        }
        
        request.getRequestDispatcher("fileloadResult2.jsp").forward(request,response);
    
    }

}

 

Struts(十一)Struts2的 命名空间与各种配置详解

标签:

原文地址:http://www.cnblogs.com/liu-Gray/p/4951780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!