Servlet快速入门

article/2025/10/2 18:35:51

目录

1、Servlet简介

2、代码实现

2.1、环境准备

2.2、实现servlet接口

2.3、配置web.xml文件

2.4、url-pattern的三种配置方式

2.5、快速创建Servlet

2.6、修改快速创建模版(针对以上模版不一致或者webServlet中请求路径没有/)

3、项目部署位置(面试题)

4、绝对路径和相对路径

4.1、绝对路径

4.2、相对路径

5、ServletConfig和ServletContext

5.1、ServletConfig

5.2、ServletContext

5.3、两者区别


 

1、Servlet简介

Servlet 是sun公司提供的一门用于开发动态web资源的技术 Servlet 是基于Request Response编程模型 Sun公司在其API提供了一个servlet接口,用户若想开发一套动态的web项目,需要完成以下2步骤:

1、编写一个java类,实现servlet接口。

2、把开发好的程序布署到服务器中。

servlet的作用:

1、接受浏览器发送过来的消息。
2、给浏览器返回消息,浏览器认识html,可以动态去输出html。

Request:请求。客户端向服务端发送的信息。
Response:响应。服务器向客户端发送的信息。
通常请求和响应是成对出现的。

2、代码实现

2.1、环境准备

在实现servlet之前,我们需要配置一下tomcat,因为tomcat里面有servlet相关jar包,如果不导入tomcat,那么servlet的方法是不能被使用的。

在idea右上角有个Edit Configurations选项,点击打开 

选择Templates,往下寻找Tomcat Server 

找到Tomcat Server,选择Local(本地)

 

点击右上角有个Configure按钮,点击打开 

在下面的选框中导入Tomcat的路径后点击OK。

 

把JRE框中选择使用你电脑安装的JDK,这里我用的是JDK1.8。

点击Apply后OK。

之后,点击左上角加号

 找到Tomcat Server,并点击Local

 

点击Deployment后点击后边的+号,

 选择Artifact添加项目

 

 出现以下画面就代表添加成功,建议把下面的Application context请求路径改为/

首先创建一个web项目,然后创建一个servlet包用来存放servlet类

创建第一个Servlet类

2.2、实现servlet接口

public class MyServlet implements Servlet {//servlet初始化方法@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("==========servlet init===========");}@Overridepublic ServletConfig getServletConfig() {return null;}//业务方法@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("=============servlet service============");//servletRequest对象强转为HttpServletRequest对象HttpServletRequest  request=(HttpServletRequest)  servletRequest;String username = request.getParameter("username");System.out.println(username);}@Overridepublic String getServletInfo() {return null;}//servlet销毁方法@Overridepublic void destroy() {System.out.println("==========servlet destroy===========");}
}

写好这个servlet类就能够完成了吗,还不行,需要进行配置web.xml文件 

2.3、配置web.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填写servlet类名--><servlet-name>MyServlet</servlet-name><!--servlet-class填写servlet类的路径--><servlet-class>cn.itssl.servlet.MyServlet</servlet-class></servlet><servlet-mapping><!--注意:这里的name名必须与上面servlet标签内的name名一致--><servlet-name>MyServlet</servlet-name><!--请求地址,这里推荐使用/类名--><url-pattern>/MyServlet</url-pattern></servlet-mapping></web-app>

启动Tomcat服务器

在浏览器地址栏中输入localhost:8080/MyServlet,注意:这里8080后面的内容就是配置文件url-pattern标签写的内容 

 

可以看到,点击回车后,idea控制台输出了我在初始方法和service方法中写的输出语句,servlet被成功的初始化了,后面是null是因为我在地址栏没有提交一个参数,所以获取到的是null,现在我提交一个参数username看看效果

 

可以看到service方法又被调用了,而且参数username也被输出到了控制台。可以发现初始化方法只被执行了一次,后面再提交就不会调用了。

2.4、url-pattern的三种配置方式

1、完全路径匹配,以”/”开头 后面是具体的路径信息。你输入什么内容。访问的时候,就需要输入什么内容,才可以找到对应的servlet例如<url-pattern>/hello</url-pattern>2、目录匹配,以/*结尾<url-pattern>/*</url-pattern>	http://ip:端口/abc/abxhttp://ip:端口/abc/bdsf 3、扩展名匹配     *.扩展名     注意:  *.扩展名(正确)   /*.扩展名(错误)<url-pattern>*.do</url-pattern><url-pattern>*.action</url-pattern>*.do *.action

2.5、快速创建Servlet

重写Servlet虽然能够获取request与response对象获取参数,但是还必须每次都得进行强转,而且重写方法里面只有service方法会被用到,其他方法大部分是用不到的,那么我们需要去快速创建一个简洁方便的servlet类。借助idea开发工具可以快速的创建servlet

1、自己去定义的servlet 只需要继承HttpServlet 就可以实现 servlet的接口了。

2、以后处理用户的请求,都写在doGet或者doPost方法中。

在新建里面找到servlet选项 

 只需要修改名字就可以,其他路径都不用动,修改完名字点击OK。 

 

这个模版里面使用了注解形式设置请求路径,所以就不用在web.xml配置文件中设置servlet以及servlet-mapping标签了。 

@WebServlet(urlPatterns = "/RegisterServlet")
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String pwd = request.getParameter("pwd");System.out.println("用户名:"+username+" 密码:"+pwd);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}

2.6、修改快速创建模版(针对以上模版不一致或者webServlet中请求路径没有/)

如果出现以上模版中不一样,或者说请求路径是name=xxxx,没有/的情况,那么跟着一下操作进行修改模版

点击File中的Settings设置 

点击Editor,找到File and Code Templates,在右侧面板中找到Other,找到Web点击后Java code templates,找到Servlet Annotated Class.java 

 把以下代码放入到模版框内

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
@javax.servlet.annotation.WebServlet(urlPatterns="/${Entity_Name}")
public class ${Class_Name} extends javax.servlet.http.HttpServlet {protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {}protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {this.doPost(request,response);}
}

3、项目部署位置(面试题)

我们思考一个问题,tomcat里面如何部署一个项目,肯定是放在了tomcat里面的webapps,那我们去项目中找一下

发现并没有项目的包,那么就很疑惑,没有放到tomcat的webapps中,项目是怎么在tomcat中跑起来的呢?

其实真正的项目是在C:\Users\Administrator\.IntelliJIdea2018.3\system\tomcat\Tomcat_9_0_54_day02_servlet\conf\Catalina\localhost\ROOT.xml

context标签中的docBase的作用就是从此路径寻找项目 

可以看到,打开这个路径,找到了我们项目写的web下的页面

然而java代码就被放在了WEB-INF的classes包中

 

4、绝对路径和相对路径

4.1、绝对路径

在html里,我们需要通过form表单请求到后台,action中的地址就是我们发送请求到的servlet地址,这里可以使用绝对地址,顾名思义,就是整个地址都得写上

  <form action="http://localhost:8081/ServletDemo" method="post"></form>

4.2、相对路径

相对路径就只用写上servlet中的请求路径

<form action="/ServletDemo" method="post"></form>

5、ServletConfig和ServletContext

5.1、ServletConfig

servletConfig 是一个对象。javaee规范中定义的一个对象。要求web服务器(tomcat),创建一个servlet的同时,也要去创建一个servletConfig对象。还要给servlet去使用。

serlvetConfig 是我们servlet 一些的配置信息。如果一个servlet 使用的过程中需要一些参数信息。这些参数信息,可以配置到servletConfig中。 之后servlet去使用。

<servlet><servlet-name>ServletConfig01</servlet-name><servlet-class>cn.itssl.config.ServletConfig01</servlet-class><!--给当前servlet配置一些参数--><init-param><param-name>charset</param-name><param-value>utf-8</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfig01</servlet-name><url-pattern>/ServletConfig01</url-pattern></servlet-mapping>

原生配置xml方式 

public class ServletConfig01 implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {//通过servletConfig对象获取到web.xml下配置的参数内容String charset = servletConfig.getInitParameter("charset");System.out.println(charset);}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

通过注解形式 

@WebServlet(urlPatterns = "/ServletConfig02", initParams = {@WebInitParam(name = "charset", value = "utf-8"), @WebInitParam(name = "charset2", value = "GBK")})
public class ServletConfig02 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String charset = this.getServletConfig().getInitParameter("charset");response.setContentType("text/html;charset="+charset);//如果不设置字符集在页面会出现乱码response.getWriter().write("我爱你中国");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}

5.2、ServletContext

在ServletConfig对象中可以看出该对象只能为当前servlet进行参数赋值,也就是说每一个servlet的参数都是独立的,如果以后有上百个servlet都要为其赋值charset字符集,那么重复的设置是很繁琐的,所以ServletContext就可以解决这个问题,它是全局设置参数。

ServletContext是整个web项目应用程序运行后的代表对象。(代表当前一个项目)可以通过ServletConfig的getServletContext() 的方法得到,然后可以用该对象取得整个应用程序的相关资源或者信息。

  <!--配置全局参数,所有的servlet都可以进行访问--><context-param><param-name>charset</param-name><param-value>utf-8</param-value></context-param>
@WebServlet(urlPatterns = "/ServletContext01")
public class ServletContext01 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String charset = this.getServletContext().getInitParameter("charset");response.setContentType("text/html;charset="+charset);response.getWriter().write("我爱你中国");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}

5.3、两者区别

ServletConfig:
    一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet
    有效,一个servlet的ServletConfig对象不能被另一个servlet访问。
ServletContext:
    对任何servlet,任何人在任何时间都有效,等于是全局的对象。


http://chatgpt.dhexx.cn/article/7faukePP.shtml

相关文章

12款免费HTML5开发框架和开发工具…

HTML5 在不同的领域让网页设计更强大的。快速&#xff0c;安全&#xff0c;响应式&#xff0c;互动和美丽&#xff0c;这些优点吸引更多的Web开发人员使用HTML5。HTML5有许多新的特性功能&#xff0c;允许开发人员和设计师创建应用程序和网站&#xff0c;带给用户桌面应用程序的…

HTML --- 开发工具篇(Hbuilder X)以及相关标签

目 录 1.常见的开发工具有 2.创建HTML文件 3.!DOCTYPE html标签 4.页面语言标签lang 5.设置字符集编码方式charset和META标记 为了提高我们的开发效率&#xff0c;减少代码的出错&#xff0c;我们并不提倡用记事本开发&#xff0c;我们有更好的开发工具。开发工具功能…

HTML与CSS基础(一)—— HTML基础(web标准、开发工具、标签)

目标 能够理解HTML的 基本语法 和标签的关系 能够使用 排版标签 实现网页中标题、段落等效果 能够使用 相对路径 选择不同目录下的文件 能够使用 媒体标签 在网页中显示图片、播放音频和视频 能够使用 链接标签 实现页面跳转功能 一、基础认知 目标&#xff1a;认识 网页组成 和…

HTML系列之开发工具

一 欢迎来到我的酒馆 介绍web开发中&#xff0c;各种开发工具的安装与使用。 目录 一 欢迎来到我的酒馆二.vscode三.webstorm 二.vscode 前端的开发工具种类繁多&#xff0c;如&#xff1a;WebStorm&#xff0c;Sublime Text&#xff0c;Atom&#xff0c;HBuilder&#xff0c;…

【HTML 教程系列第 1 篇】HTML 是什么?常用的开发工具有哪些?

这是【HTML 教程系列第 1 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 文章目录 一&#xff1a;HTML 是什么二&#xff1a;HTML 要学习什么三&#xff1a;HTML 文档的后缀名四&#xff1a;HTML 的开发工具有哪些 一&#xff1a;HTML 是什么 HTML&#xff0c…

WebStorm中文HTML编辑开发工具

WebStorm中文是一款功能强大的网页编程工具&#xff0c;功能非常强大&#xff0c;HTML5/JavaScript Web前端开发工具用户可以利用软件实现在线编程&#xff0c;为你提供最为专业的开发服务&#xff0c;让你的工作学习事半功倍被广大中国JS开发者誉为“Web前端开发神器”、“最强…

用于编写HTML代码的常见工具

1、记事本&#xff08;不推荐&#xff09; 特点&#xff1a;记事本编写页面代码不适合初学者使用&#xff0c;因为无代码提示、无代码高亮显示、用户界面不友好&#xff1b; 使用步骤&#xff1a; 首先任选一个位置新建一个记事本 打开记事本&#xff0c;写上代码并保存 将文件…

HTML标签及网页开发工具的使用(VSCode)

一、HTML语法规范 1.1所有的标签都应该包括在<>里面&#xff0c;如<html>或</html>等&#xff0c;大部分的标签都是成对出现的&#xff0c;<>里没/的为开始标签&#xff0c;<>里有/的为结束标签&#xff0c;因为这些标签是成对出现的&#xff0c…

【HTML】前端网页开发工具Vscode中DOCTYPE和lang以及字符集的作用

&#x1f60a;博主页面&#xff1a;鱿年年的学习之路 &#x1f449;博主推荐专栏&#xff1a;《前端基础学习》&#x1f448; ​&#x1f493;博主格言&#xff1a;追风赶月莫停留&#xff0c;平芜尽处是春山❤️ 目录 前言 Vscode工具生成骨架标签新增代码 一、<!DOCT…

HTML(一):开发工具

1.1、开发工具 目前前端开发工具繁多&#xff0c;例如Dreamweaver、Sublime、Hbuilder、Vscide等等。对于新手开发来说&#xff0c;我比较推荐使用HBuilder。 1.2、使用HBuilder 我们在开发的时候&#xff0c;都需要新建一个HTML页面&#xff0c;我都在页面中编写代码。 HBu…

Html5开发工具介绍

14款主流HTML5开发工具 http://sanwen8.cn/p/273vS6p.html HTML5被看做是web开发者创建流行web应用的利器&#xff0c;增加了对视频和Canvas 2D的支持。HTML5的诞生还让人们重新审视浏览器专用多媒体插件的未来&#xff0c;如Adobe的Flash和微软的Silverlight&#xff0c;HTML…

HTML(四)——HTML标签(三)——开发工具插件安装

目录 开发工具 VScode的使用 VScode工具生成骨架标签新增代码 4.3.1 文档类型声明标签 4.3.2 lang语言种类 4.3.3 字符集 总结 VSCode插件安装 安装方法 推荐插件 代码实现 实现结果 开发工具 VScode的使用 双击打开软件新建文件&#xff08;ctrlN&#xff09;保…

HTML简介与开发工具推荐[初学HTML](一)

HTML简介 HTML&#xff08; Hyper Text Markup Language&#xff09;&#xff0c;即超文本标记语言。 1. 基础结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

HTML的怎么使用,开发工具以及常用标签。

HTML的怎么使用&#xff0c;开发工具以及常用标签。 欢迎大家去博客冰山一树Sankey&#xff0c;浏览效果更好。直接右上角搜索该文字标题即可 CSDN主页&#xff1a;CSDN主页-冰山一树Sankey 博客园主页&#xff1a;博客园主页-冰山一树Sankey 前端学习&#xff1a;学习地址&…

html - 1.开发工具

HTML简介 HTML(Hyper Text Markup Language)超文本标记语言&#xff0c;是一种标记语言。它包括一系列标签&#xff0e;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本&#xff0c;HTML命令…

HTML的开发工具

主要是Visual Studio Codehttps://download.zol.com.cn/tuiguang/detail/48/470292.shtml?qw &#xff08;这个是下载地址&#xff09; https://www.jb51.net/softjc/733119.html&#xff08;这个是设置为中文&#xff09;

HTML学习(四):开发工具(编辑器)

一、Dreamweaver Adobe Dreamweaver&#xff0c;简称“DW”&#xff0c;中文名称 "梦想编织者"。最初为美国Macromedia公司开发 &#xff0c;2005年被Adobe公司收购。DW是集网页制作和管理网站于一身的所见即所得网页代码编辑器。 官方地址&#xff1a; Dreammwea…

常用HTML5开发工具有哪些?

常用HTML5开发工具有哪些&#xff1f; 在开发前端页面时&#xff0c;为了快速、高效地完成任务&#xff0c;通常会使用一些具有代码高亮显示、语法提示等便捷功能的HTML5开发工具。常见的HTML5开发工具有Sublime、Visual Studio Code、webstorm、Dreamweaver、Hbuilder等&…

linux刷新fstab,linux之fstab的一次记录

上次遇到一个问题 &#xff1a; 一台服务器用的是iSCSI存储 但是在重启的时候 fstab的挂载在网卡启动之前 启动的时候挂载不上 服务器就卡在那边了 启动不了 所以有了这次的深入fstab的学习 位置 : /etc/fstab 实例&#xff1a;fs_spec fs_file fs_type fs_options fs_dump…

AOSP ~ fstab 文件详细说明

fstab这个文件描述系统中各种文件系统的信息&#xff0c;应用程序读取这个文件&#xff0c;然后根据其内容进行自动挂载的工作。因此&#xff0c;我们需要理解其中的内容&#xff0c;了解它如何与 mount命令配合工作&#xff0c;并能够针对自己的情况进行修改。 作为系统配置文…