Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
抽象描述:
在这之前需要了解maven的相关知识和tomcat的相关知识,maven是一个构建工具,相当一个应用商店,对jar包做相应的打包,发布管理和依赖管理
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
首先进入Tomcat官网下载tomcat
注意:在解压的时候路径不能有中文,否则会出现错误
如果tomcat运行失败?
1.查看本机的Java环境是否安装成功
2.Tomcat目录有多余,把多余的文件放到其他位置
3.端口如果被占用,Tomcat默认的端口有两个(8080/8005)。
Tomcat在操作系统和网络协议栈中的位置
Tomcat 实现的主要是 HTTP 协议,也就是应用层,同时在操作系统的视角里,是属于用户态程序。我们自己的实现是在 Tomcat 基础上运行的。
servlet其实就是一组Java类和一组API,其实也就是添加一个servletjar包
首先在找到在中央仓库里面扎到servlet
至于选择哪个版本,这个取决于Tomcat,此时打开Tomcat官网
此时会找到Tomcat8.5对应的servlet版本为3.1
此时下载servlet的版本3.1,然后将jar包添加到pom.xml里面
这里无需记忆servlet具体的xml是什么内容,只需要对固定的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_3_1.xsd"
version="3.1"
metadata-complete="true">
<!-- <servlet>-->
<!-- <servlet-name>helloServlet</servlet-name>-->
<!-- <servlet-class>helloServlet</servlet-class>-->
<!-- </servlet>-->
<!-- <servlet-mapping>-->
<!-- <servlet-name>helloServlet</servlet-name>-->
<!-- <url-pattern>/hello</url-pattern>-->
<!-- </servlet-mapping>-->
</web-app>
写具体的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;
//首先,创建的servlet都必须实现HttpServlet
public class helloServlet extends HttpServlet {
//然后重写doGet和doPost请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置相应response header编码格式
resp.setCharacterEncoding("utf-8");
//设置响应类型,这里表示将会响应一个html页面
resp.setContentType("text/html");
//进行body的输出
//首先需要一个输出流
PrintWriter writer = resp.getWriter();
writer.println("你好,servlet
");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
如何进行发布
1.打开右边的maven,然后点击package
2.找到生成的war包,然后部署到Tomcat的webApp下
3.然后访问Tomcat下的hello页面(前提必须是启动了Tomcat)
当我们打开tomcat的时候就会发现我们的java31.war就已经部署在Tomcat下了
访问hello页面(访问的时候一定要加上这个jar包的名称)
servlet包含两类文件
注意:前面我们在目录里面提到过,静态页面是在webapp下的,所以我们就在webapp下创建一个web.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是一个servlet的欢迎页面</h1>
</body>
</html>
然后对其进行打包然后部署到Tomcat的webApp下,然后在浏览器输入/java31/web.html,就显示如下页面(前提要启动Tomcat)
init方法被设计只调用一次
service()方法是执行实际任务的主要方法
总结:
每个 Servlet 对象,在其生命过程中, init() 在启动时被调用一次,destroy() 在退出时被调用一次,service() 在每次请求的处理过程中都会调用一次,最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
servlet的主要位置