时间:2024-5-7 作者:老大夫 分类: JavaWeb
ServeLet需要在Tomcat中运行,所以创建项目时一定要引入tomcat依赖,否则你会发现没法继承HttpServlet,或者没法实现Servlet接口
浏览器 给服务端 发送 请求报文
tomcat接收到请求报文后,会给它封装在一个 httpservletRequest 对象中,也会生成一个 httpservletResponse 对象用来返回报文
创建一个service方法,参数放入 httpservletRequest 对象和httpservletResponse 对象作为参数
request作为传入的数据,response作为返回的数据, 具体的业务代码在service方法体中
service类也必须 实现 servlet接口,以保证代码标准的统一,可以继承HttpServlet这样不用把所有方法都实现,比较方便。
public class UserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.service(req, resp);
}
}
实现的service注意参数是HttpServletRequest req, HttpServletResponse resp的那一个,不要错误实现另一个同名的service方法。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form method="get" action="userServlet">
用户名<input type="text" name="username"><br>
<input type="submit" value="校验">
</form>
</body>
</html>
com.atguigu.UserServlet.java
package com.atguigu;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 在web.xml中配置servlet 对应请求路径
*/
public class UserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.从对象中获得任何请求中的数据(这里是username)
String username = req.getParameter("username"); //根据参数名获取参数值 无论参数是在url?后还是在请求体中
String info="YES";
//2.处理业务数据
if("atguigu".equals(username)){
info="NO";
}
//3.将想要相应的数据放入response
//应该设置content-type响应头
//resp.setHeader("Content-Type","text/html");
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter(); //该方法是获取一个向响应体中打印字符串的 打印流
writer.write(info);
}
}
web.xml
分为两块看就好了,第一部分java包和它的别名,第二部分是前端访问地址和它的别名,这两个别名一致就可以对应上了。
之后使用注解就可以不用配置xml了 使用@WebServlet("/aaa")这样注解就可以了
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0">
<!--
1. 配置servlet类,并起一个别名
servlet-class 用于告诉tomcat需要实例化的类,tomcat通过反射创造对象调用方法
servlet-name 用于关联请求的映射路径
-->
<servlet>
<!--给class包起一个别名-->
<servlet-name>userSevlet</servlet-name>
<!--class包的位置-->
<servlet-class>com.atguigu.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--前端映射别名-->
<servlet-name>userSevlet</servlet-name>
<!--前端请求的地址-->
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
</web-app>
推荐阅读: