一、简单Servelt使用
1.1 java文件
package com.demo01;
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;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
writer.write("abc");
writer.flush();
writer.close();
}
}
1.2 xml文件
### 1.3 xml文件
```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">
<!--
1、所用的请求都要注册servlet(每个servlet文件)
-->
<!--项目demo01的映射关系-->
<servlet>
<!--自定义起别名-->
<servlet-name>servlet</servlet-name>
<!--映射servlet类完整路径-->
<servlet-class>com.demo01.MyServlet</servlet-class>
<!--设置优先级-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<!--引用<servlet>中的别名-->
<servlet-name>servlet</servlet-name>
<!--完整路径:http://本机ip地址:端口号/部署时的根路径/servlet文件访问路径-->
<!--设置servlet文件访问路径,只能以/或*开始-->
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
<!--项目demo02的映射关系-->
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.demo02.MyServlet</servlet-class>
<!--设置servlet初始化参数-->
<init-param>
<!--参数value-key的方法进行存储-->
<param-name>username</param-name>
<param-value>小明</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
<!--设置优先级-->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
</web-app>
二、直接实现Servlet接口
2.1 java文件
package com.demo02;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
String username = servletConfig.getInitParameter("username");
String password = servletConfig.getInitParameter("password");
System.out.println("用户名:" + username);
System.out.println("密码:" + password);
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("全部请求接收到了这里...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
三、自定义service判断分发请求
3.1 接收请求顺序
- servlet底层是由service接收所有类型的请求再进行判断分发
3.2 代码演示
package com.demo03;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "MGS", urlPatterns = "/demo03")
public class MyGenericServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("类:"+servletRequest.getClass().getName());
if (servletRequest instanceof HttpServletRequest && servletResponse instanceof HttpServletResponse) {
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
if (req.getMethod().equalsIgnoreCase("GET")) {
doGet(req, resp);
}
if (req.getMethod().equalsIgnoreCase("POST")) {
doPost(req, resp);
}
}
}
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("我是get请求");
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("我是post请求");
}
}
四、配置servlet使用注解
4.1 代码演示
package com.demo04;
import javax.servlet.ServletConfig;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "myServlet", urlPatterns = "/demo04", initParams = {@WebInitParam(name = "username", value = "小明"), @WebInitParam(name = "password", value = "123")}, loadOnStartup = 1)
public class MyServlet extends HttpServlet {
@Override
public void init() {
ServletConfig servletConfig = getServletConfig();
String username = servletConfig.getInitParameter("username");
String password = servletConfig.getInitParameter("password");
System.out.println("demo04用户名:" + username + " 密码:" + password);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("我是get请求...");
}
}