javaweb开发核心之玩转Servlet4.0

什么是Servlet 开发第一个动态网站

介绍Servlet 开发动态网站

什么是Servlet
  • 简介:
    • 是JavaServlet的简称,用Java编写的运行在Web服务器或应用服务器上的程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成动态Web内容
  • 作用:
    • 接收用户通过浏览器传来的表单数据,或者读取数据库信息返回给浏览器查看,创建动态网页
  • 接口路径:package javax.servlet
    • 有两个常见的子类:HttpServlet、GenericServlet
  • JavaWeb Servlet文档:https://tomcat.apache.org/tomcat-9.0-doc/servletapi/index.html
创建第一个Servlet程序
  • 步骤
    1. 创建calss,继承HttpServlet
    2. 重写doGet方法,返回HTML内容
    3. 配置web.xml信息
    4. 启动tomcat,进行访问
  • 源代码
public class UserServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
	//实战响应内容
	resp.setContentType("text/html;charset=utf-8");
	PrintWriter printWriter = resp.getWriter();
	printWriter.write("<div>你好,世界</div>");
    }
}
  • 配置web.xml
<servlet>
	<servlet-name>userServlet</servlet-name>
	<servlet-class>net.xdclass.web.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>userServlet</servlet-name>
	<url-pattern>/userServlet</url-pattern>
</servlet-mapping>

Servlet里面的doPost-doGet和路径匹配讲解

doGet方法

  • http用get方式提交的请求,普通的查询就会进入到此方法

doPost方法

  • http用post方式提交的请求会进入到此方法
  • postma工具
    • 作用:专门用来模拟Http多种方式提交的工具,开发测试必备利器
    • 安装包直接安装使用
    • 选择post方式提交
  • 还有其他的doHead、doDelete等,一样的都是根据http提交Method来区分
  • Servlet访问URL使用路径映射(注意:一定要加/开头)
    • url-pattern:以""开头,可以用/xxx/yy来区分模块,*是通配符,最好用模块区分,防止通配符都映射成但不同优先级导致问题

【原理面试题】Servlet生命周期知多少

讲解Servlet的生命周期

Servlet 接口里面有5个方法,其中三个生命周期方法和两个普通方法
  • 实例化->使用构造方法创建对象
  • 初始化->执行init方法:Servlet的生命期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的,即第一次访问这个Servlet才执行
  • 服务>执行service方法,service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用
  • 销毁->执行destroy方法,destroy()方法仅执行一次,即在服务器停止且卸装 Servlet时执行该方法
public interface Servlet {
	void init(ServletConfig var1) throws ServletException;
	ServletConfig getServletConfig();
	void service(ServletRequest var1, ServletResponse var2) throws
	ServletException, IOException;
	String getServletInfo();
	void destroy();
}
  • 查看继承和实现关系XXXServlet->HttpServlet->GenericServlet->implements Servlet
  • HttpServlet里面实现了service方法,里面会根据不同的http method调用不同的方法,所以我们自定义servlet只要重写对应的doXXX方法即可

新版Servlet3.0~5.0

新版Servlet和旧版Servlet配置的区别

旧版Servlet,在xml里面配置类目和路径,比较不方便
新版Servelt,也就是3.0之后,支持注解的方式
@WebServlet(name = "userServlet",urlPatterns = {"/user"})
public class UserServlet extends HttpServlet {

    @Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException {
	System.out.println("doGet");
	//实战响应内容
	resp.setContentType("text/html;charset=utf-8");
	PrintWriter printWriter = resp.getWriter();
	printWriter.write("<div> doGet 你好世界</div>");
	}
}
配置项
//servlet名称,若不不指定,则为Servlet的完整类名
String name() default "";

//路路径映射,配置多个,需要/开头
String[] value() default {};

//路路径映射,⽀支持配置多个,需要/开头
String[] urlPatterns() default {};

//标记容器器是否在启动应⽤用时就加载Servlet,默认或数值为负数时表示第⼀一次请求Servlet时再加载; 0或正数表示启动应⽤用就加载
int loadOnStartup() default -1;

//配置初始参数
WebInitParam[] initParams() default {};

//是否⽀支持异步操作模式
boolean asyncSupported() default false;
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐