今天初次接触了Servlet,跟着狂神写了第一个 HelloServlet 程序,故记录笔记在此~


(1)Servlet简介

  • Srevlet就是sun公司开发动态web的一门技术

  • sun公司在这些API中提供了一个接口,叫做:Servlet,如果你想开发一个Servlet程序,只需要完成2个小步骤:

    • 编写一个类,实现Servlet接口
    • 把开发好的Java类部署到web服务器中
  • 把实现了Servlet接口的 Java程序 叫做:Servlet
    Servlet接口在Sun公司有两个默认的实现类:HttpServlet,GenericServlet


(2) HelloServlet 程序步骤

1、构建一个普通的Maven项目(javaweb-03-servlet),删掉里面的src目录,以后我们的学习就在这个项目里面建立Module;这个空的工程就是Maven的主工程;

2、在pom.xml中放入项目所需要的依赖

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api-->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency><!--https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version>
</dependency>

3、在主工程下新建Module,选择webapp创建Maven项目

4、关于Maven父子工程的理解:

父项目的 pom.xml中会多出modules标签:

<modules><module>servlet-01</module>
</modules>

子模块的pom.xml中:

<parent><artifactId>javaweb-03-servlet</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version>
</parent>

注意:父项目中的jar包,子项目可以直接使用!,反之不行

5、Maven环境优化!把子模块的web.xml中的webapp版本换成Tomcat 9–>ROOT–>WIN-INF–>web.xml中的,把Maven结构搭建完整,main中新建java源码文件夹和resources资源文件夹

<?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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true">
</web-app>

6、编写一个Servlet程序

  • 编写一个普通类(HelloServlet)
  • 实现Servlet接口,这里我们直接继承HttpServlet
package com.xiao.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;//HttpServlet
public class HelloServlet extends HttpServlet {//由于get或者post,只是请求实现的不同方式,可以相互调用的,只是业务逻辑不一样@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//ServletOutputStream outputStream = resp.getOutputStream();PrintWriter writer = resp.getWriter();  //响应流writer.print("Hello Servlet!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

7、编写Servlet的映射

为什么需要映射?

  • 我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet!还需要给他一个浏览器能够访问的路径!
<!--web.xml中编写映射~--> <!--注册Servlet--><servlet><servlet-name>hello</servlet-name><servlet-class>com.xiao.servlet.HelloServlet</servlet-class></servlet><!--Servlet的请求路径(映射路径)--><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao</url-pattern></servlet-mapping>

8、IDEA中配置Tomcat(配置截图时是Tomcat 10,后来出错了换成Tomcat 9了,一样的配置,就没截图了)






![在这里插入图片描述](https://img-blog.csdnimg.cn/20210610233749271.png#pic_center

9、启动Tomcat 9,进行浏览器访问测试



(3)Servlet原理


(4)Mapping问题

1、一个Servlet可以指定一个映射路径

<!--Servlet的请求路径(一个映射路径)-->
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao</url-pattern>
</servlet-mapping>

2、一个Servlet可以指定多个映射路径

   <!--Servlet的请求路径(多个映射路径)--><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao2</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao3</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao4</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao5</url-pattern></servlet-mapping>

3、一个Servlet可以指定通用映射路径

<!--Servlet的请求路径(通用映射路径)-->
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/xiao/*</url-pattern>
</servlet-mapping>

4、默认请求路径

<!--Servlet的【默认】请求路径-->
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/*</url-pattern>
</servlet-mapping>

5、指定一些后缀或者前缀等…

<!--可以自定义后缀实现请求映射
注意点:* 前面不能加项目映射的路径(/,或者 /hello/* 都不行!)
只要以指定后缀结尾的都可以访问!-->
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>*.xiao</url-pattern>
</servlet-mapping><!--http://localhost:8080/servlet_01_war/kjdshffkjaf.xiao   可以访问http://localhost:8080/servlet_01_war/hello/kjdshffkjaf.xiao 可以访问-->

6、优先级问题

  • 指定了Mapping固有映射路径—>优先级最高,找不到就会走默认的处理请求
<!--404报错-->
<servlet><servlet-name>error</servlet-name><servlet-class>com.xiao.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>error</servlet-name><url-pattern>/*</url-pattern>
</servlet-mapping>


第一个 HelloServlet 程序笔记到此结束~
跟着狂神学习java的第23天,加油鸭!坚持下去~

HelloServlet相关推荐

  1. 一步一步学习Servlet输出HelloServlet详解

    Servlet可以说是我们搞后台开发的必备技能,该技能是我们在JavaWeb时期学习的,什么是Servlet呢,其实呀,他就是一个接口,只要实现了这个接口的类,就可以称之为一个Servlet,那Ser ...

  2. 解决实例化Servlet类[com.mu.servlet.HelloServlet]异常

    解决实例化Servlet类[com.mu.servlet.HelloServlet]异常 方案一:检测*.class文件是否在目标文件目录下 如果无,需要寻找这个*.class文件将其放入目标文件目录 ...

  3. 报:类com.qin.servlet.HelloServlet不是Servlet

    报:类com.qin.servlet.HelloServlet不是Servlet 类型 异常报告 消息 类com.qin.servlet.HelloServlet不是Servlet 描述 服务器遇到一 ...

  4. 来谈谈Servlet~~

    目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...

  5. 模拟Servlet本质

    JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...

  6. 最新版IntelliJ IDEA 15开发Java Maven项目

    IntelliJ IDEA是最好的java开发IDE之一 下载地址:http://www.jetbrains.com/idea/download/ 1.安装好之后开始创建项目 2.选择Maven类型项 ...

  7. Spring MVC 相关资料整理

    来源于:http://www.cnblogs.com/ylhssn/p/4062757.html 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即 ...

  8. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常

    10.1 Servlet介绍 ​ Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...

  9. J2EE 中的服务器 tomcat6.0 配置

    Tomcat6.0 配置 第一步:下载jdk和tomcat:JDK下载  Tomcat下载     最新的jdk为1.6.10,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上 第二 ...

最新文章

  1. java jvm内存地址_深入Java虚拟机——JVM内存详解
  2. java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例
  3. Jquery1.6版本后attr的变化
  4. java应用程序多态_java – 多态和n层应用程序
  5. 国内NLP领域单轮融资新纪录,达观数据获1.6亿元B轮投资
  6. 巧妙的响应式:深入理解Vue 3的响应式机制
  7. 基于PSCAD输电线路潮流计算
  8. 基于java-GUI高校科研成果管理系统
  9. 海洋迅雷vip帐号获取器 v 1.2
  10. java怎么实现事务_java实现简单的事务
  11. 自动驾驶芯片之——FPGA和ASIC介绍
  12. LDU训练赛:小srf的游戏 单调队列 + DP
  13. ktv系统服务器,ktv服务器主机系统
  14. 华为nova 3e,重新编译内核文件,解除ptrace限制,以使用Frida
  15. C++与C#相比,哪个更适合开发大型游戏?
  16. [hdu-1814] Peaceful Commission题解
  17. AP系列文章——PDM麦克风
  18. 2022最新汉化camtasia studio电脑录制屏幕工具
  19. Linux 超级终端 不显示,超级终端怎么设置,超级终端密码不显示
  20. VS2019和boost编译支持xp系统

热门文章

  1. [k8s] 第七章 Service详解
  2. 6个快速优化回归测试套件的方法,你都知道吗?
  3. 缓存伪静态html,伪静态缓存(整站静态化)
  4. java treeset 重复,关于 TreeSet 为什么我这样写,还有是有重复的记录啊啊啊啊
  5. msf rhosts设置文件_聊一聊基于 msf 的免杀项目测试过程
  6. sqlserver工具界面_最好用的数据库管理工具DBeaver
  7. python argparse_Python 命令行之旅:初探 argparse
  8. 【c语言】蓝桥杯算法提高 企业奖金发放
  9. 防止sql注入的方式php,探讨php中防止SQL注入最好的方法是什么
  10. 我现在是个普通Java程序员,如何才能“更有竞争力”?