10.2 Servlet概述
1.核心知识点
2.学习任务1--注解配置Servlet
第一个Servlet程序。
ServletTest.java
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ServletTest")
public class ServletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletTest() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");//解决中文乱码问题
PrintWriter out=response.getWriter();//获取输出流对象
out.print("这是Eclipse创建的第一个Servlet程序!");//利用输出流向客户端发送字符数据
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
3.学习任务2--web.xml文档配置Servlet
新建WelcomeServlet类,继承HttpServlet! 重写doGet()方法,输出“欢迎来到本系统!
说明:由于直接访问Servlet属于get方法请求,所以在doGet()方法中进行输出。
WelcomeServlet.java
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WelcomeServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out=resp.getWriter();
out.print("欢迎来到本系统!");
}
}
利用web.xml配置Servlet。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Servlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>WelcomeServlet</servlet-name>
<servlet-class>test.WelcomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WelcomeServlet</servlet-name>
<url-pattern>/test/WelcomeServlet</url-pattern>
</servlet-mapping>
</web-app>
4.任务3-- Servlet运行机制
创建Servlet:InitTest.java
验证Servlet实例化!
第一次运行InitTest的控制台输出.
不关闭服务器,再次剧新运行InitTest的控制台输出.
注意: Servlet 运行期间,只会实例化1次,即只创建一个Servlet 对象!
说明: Servlet 采用多线程机制,每次请求,系统会分配一个线程来运行doGet()!为了安全起见,不建议在Servlet内定义成员变量,除非这些成员变量是所有用户共享的!
InitTest.java
package test;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/InitTest")
public class InitTest extends HttpServlet implements Servlet{
private static final long serialVersionUID=1L;
public InitTest() {//定义构造方法
System.out.println("InitTest的构造方法");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("InitTest.doGet方法!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}