Servlet-开发流程
Servlet-开发流程
- 创建一个JavaWeb项目,并将tomcat添加到当前项目的依赖
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--这里使用get和post方法均可,但action的访问路经先不要加斜线-->
<form action="userServlet" method="post">
用户名:<input type="text" name="username"> <br>
<input type="submit" value="校验">
</form>
</body>
</html>
-
重写service方法,注:其方法形参应该是(HttpServletRequest req, HttpServletResponse resp)
-
在service方法中,定义业务处理代码
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;
public class UserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//从request对象中获取请求中的任何信息(username)
String username = req.getParameter("username");
//处理业务
String info = "Yes";
if (username.equals("xiaobai")){
info = "NO";
}
//将要响应的数据放入response
PrintWriter writer = resp.getWriter();//该方法返回的是一个向响应体中打印字符的 打印流
writer.write(info);
}
}
- 在Web.xml中,配置servlet 对应的请求映射路经
<?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">
<!-- 配置servlet类,并起一个别名
servlet-class:告诉Tomcat对应的要实例化的Servlet类
servlet-name:用于关联请求的应用瑞金
-->
<servlet>
<servlet-name>userServlet</servlet-name>
<servlet-class>com.xiaobai.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
</web-app>
Content-Type响应头
MIME基类型响应头,又称为媒体类型、文件类型、响应的数据类型
MIME类型用于告诉客户端响应的数据是什么类型的数据,客户端以此类型决定用什么方式解析响应体
在Tomcat 的配置文件 -> web.xml中,几乎记录了所有的文件类型对应的MIME类型,例如:
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
扩展名为html的文件在响应时,Tomcat会根据web.xml的配置查找到对应Content-Type的属性值并将其赋值
动态页面的访问
当请求的是一个servlet页面时,响应头中没有Content-Type的键值对,默认的时html格式
我们需要调用resp对象的setContentType方法手动为其属性赋值
resp.setContentType("text/html");
resp.setHeader("Content-Type", "text/html");