今天初次接触了Servlet,跟着狂神写了第一个 HelloServlet 程序,故记录笔记在此~
Srevlet就是sun公司开发动态web的一门技术
sun公司在这些API中提供了一个接口,叫做:Servlet,如果你想开发一个Servlet程序,只需要完成2个小步骤:
把实现了Servlet接口的 Java程序 叫做:Servlet
Servlet接口在Sun公司有两个默认的实现类:HttpServlet,GenericServlet
1、构建一个普通的Maven项目(javaweb-03-servlet),删掉里面的src目录,以后我们的学习就在这个项目里面建立Module;这个空的工程就是Maven的主工程;
2、在pom.xml中放入项目所需要的依赖
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>4.0.1version>
<scope>providedscope>
dependency>
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>jsp-apiartifactId>
<version>2.2version>
dependency>
3、在主工程下新建Module,选择webapp创建Maven项目
4、关于Maven父子工程的理解:
父项目的 pom.xml中会多出modules标签:
<modules>
<module>servlet-01module>
modules>
子模块的pom.xml中:
<parent>
<artifactId>javaweb-03-servletartifactId>
<groupId>org.examplegroupId>
<version>1.0-SNAPSHOTversion>
parent>
注意:父项目中的jar包,子项目可以直接使用!,反之不行
5、Maven环境优化!把子模块的web.xml中的webapp版本换成Tomcat 9–>ROOT–>WIN-INF–>web.xml中的,把Maven结构搭建完整,main中新建java源码文件夹和resources资源文件夹
<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">
web-app>
6、编写一个Servlet程序
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,只是请求实现的不同方式,可以相互调用的,只是业务逻辑不一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//ServletOutputStream outputStream = resp.getOutputStream();
PrintWriter writer = resp.getWriter(); //响应流
writer.print("Hello Servlet!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
7、编写Servlet的映射
为什么需要映射?
- 我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet!还需要给他一个浏览器能够访问的路径!
<servlet>
<servlet-name>helloservlet-name>
<servlet-class>com.xiao.servlet.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiaourl-pattern>
servlet-mapping>
8、IDEA中配置Tomcat(配置截图时是Tomcat 10,后来出错了换成Tomcat 9了,一样的配置,就没截图了)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210610233749271.png#pic_center
9、启动Tomcat 9,进行浏览器访问测试
1、一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiaourl-pattern>
servlet-mapping>
2、一个Servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiaourl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiao2url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiao3url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiao4url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiao5url-pattern>
servlet-mapping>
3、一个Servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/xiao/*url-pattern>
servlet-mapping>
4、默认请求路径
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/*url-pattern>
servlet-mapping>
5、指定一些后缀或者前缀等…
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>*.xiaourl-pattern>
servlet-mapping>
6、优先级问题
<servlet>
<servlet-name>errorservlet-name>
<servlet-class>com.xiao.servlet.ErrorServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>errorservlet-name>
<url-pattern>/*url-pattern>
servlet-mapping>
第一个 HelloServlet 程序笔记到此结束~
跟着狂神学习java的第23天,加油鸭!坚持下去~