HelloServlet
今天初次接触了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相关推荐
- 一步一步学习Servlet输出HelloServlet详解
Servlet可以说是我们搞后台开发的必备技能,该技能是我们在JavaWeb时期学习的,什么是Servlet呢,其实呀,他就是一个接口,只要实现了这个接口的类,就可以称之为一个Servlet,那Ser ...
- 解决实例化Servlet类[com.mu.servlet.HelloServlet]异常
解决实例化Servlet类[com.mu.servlet.HelloServlet]异常 方案一:检测*.class文件是否在目标文件目录下 如果无,需要寻找这个*.class文件将其放入目标文件目录 ...
- 报:类com.qin.servlet.HelloServlet不是Servlet
报:类com.qin.servlet.HelloServlet不是Servlet 类型 异常报告 消息 类com.qin.servlet.HelloServlet不是Servlet 描述 服务器遇到一 ...
- 来谈谈Servlet~~
目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...
- 模拟Servlet本质
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
- 最新版IntelliJ IDEA 15开发Java Maven项目
IntelliJ IDEA是最好的java开发IDE之一 下载地址:http://www.jetbrains.com/idea/download/ 1.安装好之后开始创建项目 2.选择Maven类型项 ...
- Spring MVC 相关资料整理
来源于:http://www.cnblogs.com/ylhssn/p/4062757.html 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即 ...
- Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常
10.1 Servlet介绍 Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...
- J2EE 中的服务器 tomcat6.0 配置
Tomcat6.0 配置 第一步:下载jdk和tomcat:JDK下载 Tomcat下载 最新的jdk为1.6.10,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上 第二 ...
最新文章
- java jvm内存地址_深入Java虚拟机——JVM内存详解
- java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例
- Jquery1.6版本后attr的变化
- java应用程序多态_java – 多态和n层应用程序
- 国内NLP领域单轮融资新纪录,达观数据获1.6亿元B轮投资
- 巧妙的响应式:深入理解Vue 3的响应式机制
- 基于PSCAD输电线路潮流计算
- 基于java-GUI高校科研成果管理系统
- 海洋迅雷vip帐号获取器 v 1.2
- java怎么实现事务_java实现简单的事务
- 自动驾驶芯片之——FPGA和ASIC介绍
- LDU训练赛:小srf的游戏 单调队列 + DP
- ktv系统服务器,ktv服务器主机系统
- 华为nova 3e,重新编译内核文件,解除ptrace限制,以使用Frida
- C++与C#相比,哪个更适合开发大型游戏?
- [hdu-1814] Peaceful Commission题解
- AP系列文章——PDM麦克风
- 2022最新汉化camtasia studio电脑录制屏幕工具
- Linux 超级终端 不显示,超级终端怎么设置,超级终端密码不显示
- VS2019和boost编译支持xp系统
热门文章
- [k8s] 第七章 Service详解
- 6个快速优化回归测试套件的方法,你都知道吗?
- 缓存伪静态html,伪静态缓存(整站静态化)
- java treeset 重复,关于 TreeSet 为什么我这样写,还有是有重复的记录啊啊啊啊
- msf rhosts设置文件_聊一聊基于 msf 的免杀项目测试过程
- sqlserver工具界面_最好用的数据库管理工具DBeaver
- python argparse_Python 命令行之旅:初探 argparse
- 【c语言】蓝桥杯算法提高 企业奖金发放
- 防止sql注入的方式php,探讨php中防止SQL注入最好的方法是什么
- 我现在是个普通Java程序员,如何才能“更有竞争力”?