JavaEE 7教程

Servlet的web资源包 错误处理和多重上传处理

上页

  Web资源包

  您可以使用ServletContext.getResource和getResourceAsStream方法来访问捆绑在.war文件资源,源路径被指定为一个 “/”带头的字符串, 这个路径解析相对于上下文的根路径,或者相对
捆绑在WEB-INF/lib中的JAR文件的META-INF/resources目录。

假设myApplication.war包含如下文件目录结构:
WEB-INF
lib
 library.jar

library.jar有如下结果:

library.jar
 MyClass1.class
 MyClass2.class
 stylesheets
  common.css
 images
  header.png
  footer.png

如果样式表和图像的目录必须在servlet访问,你需要 手动把它们解压到Web应用程序的根目录。 Servlet 3.0中允许库打包资源在META-INF/resources目录下。

library.jar
 MyClass1.class
 MyClass2.class
 META-INF
  resources
   stylesheets
     common.css
   images
     header.png
     footer.png

资源需要不被提取到应用程序的根,就可以直接被访问。这使得可以从捆绑的第三方JAR文件
META-INF/resources直接访问资源,而不是手动提取。 该应用程序总是会寻找资源,在根扫描 捆绑在WEB-INF/lib目录中JAR文件。

Error Mapping错误映射

  HTTP错误代码或抛出一个的servlet异常可以被映射到一个资源,一个自定义页面。这些页面是通过<error-page>定义:

<error-page>
<error-code>404</error-code>
<location>/error-404.jsp</location>
</error-page>

也可以规定自己的类出错时映射页面:

<error-page>
<exception-type>com.jdon.MyException</exception-type>
<location>/error.jsp</location>
</error-page>

处理多部分Multipart请求

  @ MultipartConfig可以在一个servlet指定,表示它预计的请求 输入是multipart/form-data类型的数据。该HttpServletRequest.getParts和getPart方法使该多重请求的各个部分可用:

@WebServlet(urlPatterns = {"/FileUploadServlet"})
@MultipartConfig(location="/tmp")
public class FileUploadServlet extends HttpServlet {
 @Override
 protected void doPost(HttpServletRequest request,   HttpServletResponse response)
   throws ServletException, IOException {
   for (Part part : request.getParts()) {
     part.write("myFile");
   }
 }
}

提交的页面是如下:

<form action="FileUploadServlet" enctype="multipart/form-data" method="POST">
<input type="file" name="myFile"><br>
<input type="Submit" value="Upload File"><br>
</form>

 

JavaEE教程

Java学习心得

基于容器的用户安全认证授权系统

Spring security安全机制深入使用