1.servlet:定义:
。接口
2.配置servlet:
public class HelloServlet extends HttpServlet {}
HttpServlet 固定的
IDEA配置v好了
类
package com.example.demo1;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
private String message;
public void init() {
message = "Hello World!";
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
// Hello
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
}
public void destroy() {
}
}
xml:
<servlet-name>demo1</servlet-name>//把类的名称配个短的文字
<servlet-class>com.example.demo3.HelloServlet</servlet-class>//类的名称(路径) //package com.example.demo3;可以利用包,来知道路径
<servlet-mapping> //映射
<servlet-name>demo1</servlet-name> //
<url-pattern>/demo1</url-pattern> //将来能通过这个路径访问类
</servlet-mapping>
/servlet-class //标签
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.example.demo3.HelloServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo13</servlet-name>
<url-pattern>demo13</url-pattern>
</servlet-mapping>
4.通过: demo1访问
因为我设置了路径所以不同
我的是这个
http://localhost:8080/demo3_war_exploded/demo1
5.servlet:
6.servlet生命周期:
init(){}
// 在Servlet创建时,执行一次init(){}
service(){}//任何一次请求,都能执行一次service(){}
destroy(){} //服务器正常关闭时,执行一次:destroy(){}
而且:
init{}在控制台输出
destroy也在控制台输出
service:在浏览器页面输出
代码:
package com.example.demo16;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet2 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("执行init方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.getWriter().println("helloWorld!");//在浏览器可以输出,通过xml配置,输入网址
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("执行destroy方法");
}
}
效果:
一输入:网址,在IDEA中:控制台执行了:
init(){}
一关闭服务器就出现
就执行:destroy(){}方法
7.启动服务器就:加载servlet对象
执行:init(){}方法
在xml中配置:
<load-on-startup>1</load-on-startup>//加载启动1s,服务器一启动,1s后,创建servlet对象,执行init(){}方法
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_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>demo2</servlet-name>
<servlet-class>com.example.demo16.HelloServlet2</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo2</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo3</servlet-name>
<servlet-class>com.example.demo16.HelloSerrvlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo3</servlet-name>
<url-pattern>/helloo</url-pattern>
</servlet-mapping>
</web-app>