首先必须要创建一个MyServlet的一个类并且继承HttpServlet
package com.mashibing;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("my first web");
System.out.println("my first web");
}
}
导包的时候发现没有办法导包,这个时候需要我们手动添加一个servlet包
就可以成功导包啦
接下来我们先做一个简单的测试 创建一个MyServlet01的类作为一个测试
package com.mashibing;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
public class MyServlet01 extends HttpServlet {
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("my second web");
}
}
接下来我们查看servletd 执行周期性,要先new一个servlet ,并且在xml里面推荐serclet-mapping,代码在下面展示
测试完成后开始写一个doget 和dopost方法
同样需要new一个methodservlet
package com.mashibing;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MethodServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("我是post");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("我是get");
}
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
System.out.println("我是service");
}
}
下面展示一下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>MyServlet</servlet-name>
<servlet-class>com.mashibing.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/firstweb</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyServlet01</servlet-name>
<servlet-class>com.mashibing.MyServlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet01</servlet-name>
<url-pattern>/secondweb</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>life</servlet-name>
<servlet-class>com.mashibing.ServletLife</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>life</servlet-name>
<url-pattern>/life</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MethodServlet</servlet-name>
<servlet-class>com.mashibing.MethodServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MethodServlet</servlet-name>
<url-pattern>/method</url-pattern>
</servlet-mapping>
</web-app>
web页面端写一个简单的登录页面用来测试
<%--
Created by IntelliJ IDEA.
User: 19218297
Date: 2022/12/1
Time: 16:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="method" method="get">
用户名:<input type="text" name="name" value=""/><br/>
密码:<input type="text" name="pwd" value=""/><br/>
<input type="submit" value="loading">
</form>
</body>
</html>
最后看一下效果
运行成功,可以去测试这三个方法的区别
总结:当有service方法时优先调取service方法,其余两种情况根据自己选择调取
在测试过程中真的又被气到
在method.jsp中手动写入的值和自动键入值居然不一样,一直苦苦查找原因,最后居然是因为这个程序运行不成功
404:访问源不存在
请求路径跟web.xml中填写的请求不一致请求路径的项目虚拟名称填写错误
405
请求的方式跟servlet中支持的方式不一致
500:服务器内部错误- web.xml中servlet类的名称错误servlet对应的处理方法中存在代码逻辑