javaweb回顾第一篇servlet的学习和理解
前言:关于servlet相信学过java的都不会陌生,我最近又把这些基础知识整理一遍,便于自已能更好的理解ssm或者ssh,下面开始
1:Servlet接口
servlet有5个方法下面分别简单的介绍每个方法的作用
1.1:public void init(ServletConfig config)
在servlet被实例化以后,servlet容器会调用init方法来初始化该对象,这个方法主要是完成在请求前的一些初始化工作,比喻调用数据库连接,实例化对象等
1.2:public void service(ServletRequest req, ServletResponse res)
这个方法是一个核心的方法,我们主要的操作就在这个方法中进行,在收到客户端请求以后然后进行业务的处理,把处理的信息响应给客户端
1.3:public void destroy()
这个方法是当servlet实例被移除的时候会调用,释放servlet中的资源,比喻关闭数据库连接等可以理解为析构函数
1.4:public String getServletInfo()
这个方法主要是用于返回Servlet的描述信息,这些信息可以是Servlet的作者,版本、版权信息等
1.5:public ServletConfig getServletConfig()
主要返回容器调用init以后传给servlet对象的ServletConfig对象
5个方法的作用说完了现在看下代码

1 public class HelloWorldServlet implements Servlet{ 2 3 private ServletConfig servletConfig; 4 //private ServletInfo 5 public void init(ServletConfig config) throws ServletException { 6 this.servletConfig=config; 7 } 8 9 public ServletConfig getServletConfig() { 10 return servletConfig; 11 } 12 13 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { 14 String initReleName=this.servletConfig.getInitParameter("realName"); 15 String servletName=this.servletConfig.getServletName(); 16 String username=req.getParameter("username"); 17 18 res.setContentType("text/html;charset=gb2312");//避免中文乱码 19 //得到PrintWriter对象, 20 PrintWriter out=res.getWriter(); 21 //向客户端发送数据 22 out.println("Hello World " +username+"<br/>"); 23 out.println("servlet名称:"+servletName+"<br/>"); 24 out.println("内联的真实名称:"+initReleName+"<br/>"); 25 //关闭流 26 out.close(); 27 } 28 29 /** 30 *用于返回Servlet的描述信息,这些信息可以是Servlet的作者,版本、版权信息等 31 */ 32 public String getServletInfo() { 33 String str ="zhangsan"; 34 return str; 35 } 36 37 public void destroy() { 38 // TODO Auto-generated method stub 39 } 40 }
我们在来配置一个web.xml

1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 <web-app> 5 <display-name>myservlet</display-name> 6 <description>这是我的第一个servlet</description> 7 <servlet> 8 <servlet-name>HelloWorldServlet</servlet-name> 9 <servlet-class>com.lp.servlet.HelloWorldServlet</servlet-class> 10 <init-param> 11 <param-name>realName</param-name> 12 <param-value>张三</param-value> 13 </init-param> 14 </servlet> 15 <servlet-mapping> 16 <servlet-name>HelloWorldServlet</servlet-name> 17 <url-pattern>/helloworld</url-pattern> 18 </servlet-mapping> 19 </web-app>
注释1:xml中的Servlet第一个表示Servlet-name表示名称,为了和后面servlet-mapping中的Servlet-name进行关联,然后在影射的时候就可以找到需要的Servlet类了
在浏览器中输入http://localhost:8080/servlet-test/helloworld?username=lp然后我们可以看到效果
2:Servlet的生命周期
我用一幅图来表示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?