javaweb开发核心之玩转Servlet4.0
javaweb开发核心之玩转Servlet4.0什么是Servlet 开发第一个动态网站介绍Servlet 开发动态网站什么是Servlet简介:是JavaServlet的简称,用Java编写的运行在Web服务器或应用服务器上的程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成动态Web内容作用:接收用户通过浏览器传来的表单数据,或者读取数据库信息返回给浏览器查看,创建动态网页接口路
·
文章目录
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程序
- 步骤
- 创建calss,继承
HttpServlet
- 重写
doGet
方法,返回HTML内容 - 配置web.xml信息
- 启动tomcat,进行访问
- 创建calss,继承
- 源代码
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;
更多推荐
已为社区贡献2条内容
所有评论(0)