当前位置:网站首页>深入源码分析Servlet第一个程序
深入源码分析Servlet第一个程序
2022-04-23 05:42:00 【ShuangTwo】
首先给出Servlet程序,然后再分许其实现。编写一个最简单的Servlet程序,只需要写两个文件即可。一个是Servlet的Java程序,一个是配置web.xml。
Servlet是继承自HttpServlet,需要重写doGet()和doPost()两个方。
HelloServlet
package com.java.servlet;
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 HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8"); //设置响应类型为HTML文档
PrintWriter out = resp.getWriter(); //获取响应输出流
out.println("<html>");
out.println("<title>God of Night! </title>");
out.println("<body>");
out.println("<h1>Without a bit of cold, how can the plum blossoms smell so sweet.</h1>");
out.println("</body>");
out.println("</html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
分析代码:
首先response调用setContentType()方法,设置响应内容的类型。
这个setContentType方法是由response调用的,response是HttpServletResponse 的实例对象,点进去HttpServletResponse 可以看见,HttpServletResponse继承了ServletResponse
ServletResponse接口定义了setContentType方法,以及后面要说getWriter方法。
查看setContentType的实现类,发现ServletResponseWrapper实现了ServletResponse接口中所有的方法。
整个流程图如下:
总结:
ServletResponse定义了响应的所有方法,ServletResponseWrapper和HttpServletResponseWrapper共同实现这些方法,然后HttpServletResponse继承ServletResponse,所有HttpServletResponse就可以直接使用ServletResponse的所有方法。
关于HttpServletRequest的流程图和源码分析跟HttpServletResponse如出一辙。
再谈一个resp.getWriter(),这个方法作用是获取响应输出流,将信息数据到前端页面,如果通过System.out.println();
只能将信息输出到后后台。
web.xml
<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"
metadata-complete="true">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.java.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/geeks</url-pattern>
</servlet-mapping>
</web-app>
web.xml注册servlet,将servlet的类和包注册之后,通过url-pattern设置URL跳转我们编写的servlet程序。
总结:
- 编写Servlet程序,定义页面的内容
- 注册Servlet程序,定义URL访问地址
版权声明
本文为[ShuangTwo]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43356538/article/details/118055228
边栏推荐
- delete和truncate
- Character recognition easyocr
- Hongji micro classroom | cyclone RPA's "flexible digital employee" actuator
- 【华为机试】考试得分总数(如何处理答错的情况?回溯一次,代表答错一题)
- MySQL realizes master-slave replication / master-slave synchronization
- Excel obtains the difference data of two columns of data
- Utf8 to STD: string and STD: string to utf8
- Jiugong magic square - the 8th Lanqiao provincial competition - group C (DFS and comparison of all magic square types)
- 一文读懂当前常用的加密技术体系(对称、非对称、信息摘要、数字签名、数字证书、公钥体系)
- [machine learning] scikit learn introduction
猜你喜欢
第36期《AtCoder Beginner Contest 248 打比赛总结》
Issue 36 summary of atcoder beginer contest 248
Jiugong magic square - the 8th Lanqiao provincial competition - group C (DFS and comparison of all magic square types)
C, class library
deep learning object detection
Getting started with JDBC \ getting a database connection \ using Preparedstatement
多线程与高并发(1)——线程的基本知识(实现,常用方法,状态)
多线程与高并发(2)——synchronized用法详解
2 - software design principles
mysql中duplicate key update
随机推荐
事实最终变量与最终变量
xxl-job采坑指南xxl-rpc remoting error(connect timed out)
MySQL create Oracle exercise table
Pytorch deep learning practice_ 11 convolutional neural network
No.1.#_6 Navicat快捷键
Hongji cyclone RPA provides technical support for Guojin securities and realizes process automation in more than 200 business scenarios
2.devops-sonar安装
多线程与高并发(2)——synchronized用法详解
SQL注入
Common status codes
QT compressed folder
SQL语句简单优化
Issue 36 summary of atcoder beginer contest 248
PreparedStatement防止SQL注入
Ora: 28547 connection to server failed probable Oracle net admin error
Step on the pit: Nacos uses startup CMD - M standalone startup error
mysql sql优化之Explain
第36期《AtCoder Beginner Contest 248 打比赛总结》
Utf8 to STD: string and STD: string to utf8
OSI层常用协议