Servlet本质上就是一个java类
Tomcat与Servlet的关系
Servlet运行在Tomcat中
Servlet与普通的Java程序的区别
- Servlet本质上就是一个Java类
- Servlet类必须实现接口javax.servlet.Servlet接口
- 运行在Web容器中,tomcat就是一个Web容器。
- 能够接收浏览器发送的请求,并且做出响应给浏览器。
使用Servlet2.5编写Servlet的步骤
- 写一个类继承于HttpServlet,HttpServlet是个抽象类它已经实现了Servlet接口。
- 重写doGet或doPost方法,分别处理表单的get或post请求。
如果直接在浏览器输入地址访问,使用的是get方法。 - 编写web.xml配置文件,对Servlet进行配置,才能通过浏览器来访问。
Demo1Servlet.java
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//1. 编写一个类继承于HttpServlet, 我们写的Servlet必须实现Servlet接口
public class Demo1Servlet extends HttpServlet {
//2. 重写doGet方法
/**
用来处理浏览器发送的get请求
@param request 请求对象
@param response 响应对象
@throws ServletException
@throws IOException
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应的类型和字符集
response.setContentType("text/html;charset=utf-8");
//得到打印流,向浏览器输出内容
PrintWriter out = response.getWriter();
out.print("<h1>Hello 第1个Servlet </h1>");
}
}
编辑目录:web/WEB-INF/web.xml中配置servlet,设置访问地址为/demo1
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--配置servlet-->
<servlet>
<!--servlet的名字-->
<servlet-name>demo1</servlet-name>
<!--servlet的类全名-->
<servlet-class>com.test.servlet.Demo1Servlet</servlet-class>
</servlet>
<!--配置servlet的访问地址-->
<servlet-mapping>
<!--与上面的名字相同-->
<servlet-name>demo1</servlet-name>
<!--访问地址,以/开头 -->
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
xml执行流程:
Servlet3.0的新特性
- 异步处理支持:在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
- 新增的注解支持:用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
- 可插性支持:开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。
- 简化了文件上传的功能:现在可以直接使用Servlet的API实现文件的上传,以前需要借助第三方上传组件。
使用Servlet3.0编写Servlet(使用注解的方式)
Demo2Servlet .java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//@WebServlet(name = "demo2",urlPatterns = "/demo2")
@WebServlet("/demo2")
public class Demo2Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应类型和字符集
response.setContentType("text/html;charset=utf-8");
// 获取打印流
PrintWriter out = response.getWriter();
out.println("<h1 style='color:orange'>使用Servlet 3.0</h1>");
}
}