Servlet的开发
- Servlet是一个特殊的Java类,必须继承HttpServlet
- doGet 响应客户顿的GET请求
- doPost 响应客户端的POST请求 (重写service()方法响应客户端所有请求)
- init( ServletConfig config) 创建servlet实例时,初始化Servlet资源
- destory() 销毁实例时,自动调用该方法的回收资源
Servlet的配置
- 1、在Servlet类中使用@WebServlet注解进行配置
- 2、在web.xml文件中进行配置
<!-- 配置Servlet的名字 -->
<servlet>
<!-- 指定Servlet的名字,
相当于指定@WebServlet的name属性 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet的实现类 -->
<servlet-class>lee.FirstServlet</servlet-class>
</servlet>
<!-- 配置Servlet的URL -->
<servlet-mapping>
<!-- 指定Servlet的名字 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet映射的URL地址,
相当于指定@WebServlet的urlPatterns属性-->
<url-pattern>/aa</url-pattern>
</servlet-mapping>
JSP/Servlet的生命周期
创建实例————初始化————响应请求————资源回收————实例被销毁
创建实例的两个时机
- (1)用户请求时
- (2)应用启动时
@WebServlet(loadOnStartup=1) //整型值越小,Servlet就越先实例化
public class TimerServlet extends HttpServlet
{
public void init(ServletConfig config)throws ServletException
{
super.init(config);
Timer t = new Timer(1000,new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println(new Date());
}
});
t.start();
}
}
访问Servlet的配置参数
@WebServlet(name="testServlet"
, urlPatterns={"/testServlet"}
, initParams={
@WebInitParam(name="driver", value="com.mysql.jdbc.Driver"),
@WebInitParam(name="url", value="jdbc:mysql://localhost:3306/javaee"),
@WebInitParam(name="user", value="root"),
@WebInitParam(name="pass", value="32147")})
// 获取ServletConfig对象
ServletConfig config = getServletConfig();
// 通过ServletConfig对象获取配置参数:dirver
String driver = config.getInitParameter("driver");
Servlet3.0新特性
注解
@WebServlet :用于修饰一个Servlet类,用于部署Servlet类
@WebInitParam
@WebListener
@WebFilter
@MultipartConfig:用于修饰Servlet,指定该Servlet将会负责处理multipart/form-data类型的请求(主要用于文件上传)
Web模块支持
异步处理
改进的Servlet API
HttpServletRequest增加了对文件上传的支持
Part getPart(String name):根据名称获取文件上传域
Collection getParts():获取所有的文件的上传域
上传文件要为表单域设置enctype属性
application/x-www-form-urlencoded:默认,只处理value属性值
multipart/form=data:以二进制流的方式来处理表单数据(上传文件)
text/plain:当表单的action属性为mailto:URL的形式时比较方便
ServletContext允许通过编程的方式动态注册Servlet、Filter