Servlet3.0新特性

1.使用注解来代替web.xml文件的配置

其原理都是把注解和wen.xm文件加载到内存中,但是有先后顺序,注解先加载,web.xml文件后加载,这样先加载的注解就被wen.xml文件给覆盖了。举一个简单的例子:

新建一个Servlet文件ServletTest.java,使用注解

@WebServlet(urlPatterns={"/test"},name=("ServletTest"),initParams={@WebInitParam(name="zz",value="bbb")})

在web.xml同样加上如下代码:

<servlet>

    <servlet-name>ServletTest</servlet-name>

    <servlet-class>servlet.ServletTest</servlet-class>

    <init-param>

      <param-name>zz</param-name>

      <param-value>abcd</param-value>

    </init-param>

  </servlet>

  <servlet-mapping>

    <servlet-name>ServletTest</servlet-name>

    <url-pattern>/test</url-pattern>

  </servlet-mapping>

重写HttpServlet的init方法:

@Override

  publicvoid init(ServletConfig config) throws ServletException {    System.out.println("参数:"+config.getInitParameter("zz"));

  }

启动服务器,访问这个Servlet文件。结果可以看到控制台输出了abcd,证明结论是正确的。

2.

Sevlet3.0的Listener加载的顺序是根据,类名字符串的自然顺序进行排列的,而在3.0之前因为是写在webxml文件中,所以加载顺序是根据Listener在web.xml中排列顺序进行先后加载的

而Filter呢?Filter则是根据fileName中的值得字符串排列进行先后加载的

3.不用第三方的jar包直接就可以进行上传文件

Part类支持文件上传的所有操作

@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//获取普通请求参数
String userName = request.getParameter("name");
System.out.println("userName-"+userName);
//获取文件上传域
Part part = request.getPart("file");
//获取文件上传类型
String contentType = part.getContentType();
out.write("文件的上传类型"+contentType+"<br/>");
//String s = "."+contentType.substring(contentType.lastIndexOf("/")+1);
//获取文件上传的大小
out.write("文件上传的大小"+part.getSize()+"<br/>");
//获取该文件上传域中的Header Name
Collection<String> headernames = part.getHeaderNames();
String fileName = "";
//遍历文件上传域的Header Name ,Value
for(String headername :headernames){
out.write(headername+"-->"+part.getHeader(headername));
if(headername.equals("content-disposition")){
String content = part.getHeader("content-disposition");
int idx = content.lastIndexOf("filename");
fileName = content.substring(idx+10,content.length()-1);
}
}
System.out.println("file-"+fileName);

//将上传的文件写入服务器
String path = getServletContext().getRealPath("../uploadFiles");
System.out.println(path);
System.out.println("---小小分隔线---");
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
part.write(getServletContext().getRealPath("../uploadFiles")+"/"+fileName);

4.异步请求AsyncContext
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值