您的位置:首页 > 其它

Servlet3.0 注解

2019-05-05 22:06 99 查看

Servlet3.0  注解

       在 Servlet3.0 之前一直使用的都是配置文件的方式来实现各种组件,Servlet3.0 之后提供了注解,可以达到零配置。但现实中一般是注解+配置结合使用。我们看几个常用的注解。

1. @WebServlet

      开发 servlet 项目,使用@WebServlet 将一个继承于,javax.servlet.http.HttpServlet 的类定义为 Servlet 组件。在 Servlet3.0 中,可以使用@WebServlet 注解将一个继承于 javax.servlet.http.HttpServlet 的类标注为可以处理用户请求的 Servlet.

实例:

[code]/**
* 使用@WebServlet将一个继承于javax.servlet.http.HttpServlet 的类定义为Servlet组件
*/
@WebServlet("/s01") // "/s01"就是servlet的对外访问路径,相当于配置文件中url-pattern
//@WebServlet(name="Servlet01",value="/s01")
//@WebServlet(name="Servlet01",value={"/s01","/s001"})
//@WebServlet(urlPatterns="/s01")
//@WebServlet(urlPatterns={"/s01","/s001"})
public class Servlet01 extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("Servlet01...");
}

}

2. @WebFilter

@WebFilter 用来配置过滤器

实例:

 

[code]@WebFilter("/*")
public class Filter01 implements Filter {

/**
* Default constructor.
*/
public Filter01() {
// TODO Auto-generated constructor stub
}

/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}

/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

System.out.println("Filter01...");
chain.doFilter(request, response);
}

/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}

}

 3. @WebListener

            Servlet3.0 提供@WebListener 注解将一个实现了特定监听器接口的类定义为监听器。将 实现了 ServletContextListener 接口的MyServletContextListener标注为监听器。

实例:

 

[code]@WebListener
public class Listener01 implements HttpSessionListener {

/**
* Default constructor.
*/
public Listener01() {
// TODO Auto-generated constructor stub
}

/**
* @see HttpSessionListener#sessionCreated(HttpSessionEvent)
*/
public void sessionCreated(HttpSessionEvent se)  {
// TODO Auto-generated method stub
}

/**
* @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
*/
public void sessionDestroyed(HttpSessionEvent se)  {
// TODO Auto-generated method stub
}

}

 4. @MultipartConfig

               使用注解@MultipartConfig 将一个 Servlet 标识为支持文件上传。Servlet3.0 将 multipart/form-data 的 POST 请求封装成 Part,通过 Part 对上传的文件进行操作.

             注意:
                  如果前台的表单类型是enctype="multipart/form-data",servlet一定要加注解@MultipartConfig!!!!

实例:

[code]/**
* 	@MultipartConfig
使用注解@MultipartConfig 将一个 Servlet 标识为支持文件上传。
Servlet3.0 将 multipart/form-data 的 POST 请求封装成 Part,通过 Part 对上传的文件进行操作。

文件上传
前台:
表单上传
1、表单的提交方式为POST
2、表单类型 enctype="multipart/form-data"
3、file文件域要设置name属性值

后台:
在Servlet类上添加注解@MultipartConfig

注意:
如果前台的表单类型是enctype="multipart/form-data",servlet一定要加注解@MultipartConfig!!!!
*/
@MultipartConfig
@WebServlet("/upload")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 如果是普通的表单项,就是通过获取参数的方式  request.getParameter()
String uname = request.getParameter("uname");
System.out.println(uname);

// Servlet3.0 将 multipart/form-data 的 POST 请求封装成 Part
// request.getPart("myfile"):myfile代表的是前台表单中的文件域的 name属性值
Part part = request.getPart("myfile");
// 得到上传的文件名
String fileName = part.getSubmittedFileName();
// 上传文件到指定目录
part.write(request.getServletContext().getRealPath("/") + fileName);

}

}

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: