1、Servlet简介
- Servlet就是Sun公司开发动态web的一门技术
- Sun公司在这些API中提供了一个接口:Servlet,如果想要开发一个Servlet程序,需要完成两个步骤:
- 1、编写一个类,实现Servlet接口
- 2、将编写好的Java程序部署类部署到web服务器中(例如上篇博客中的tomcat)
- 我们把实现了Servlet接口的Java程序,叫做Servlet
2、HelloServlet简单示例
Servlet接口有两个默认的实现类:HttpServlet,GenericServlet
2.1、构架一个javaweb项目(详细见上一篇博客),在src/main目录下把该有的目录添加上去
2.2、Maven环境的优化
2.2.1、在修改web.xml中的配置为最新
将里边的代码改为下面这段
<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>
2.2.2、将maven的结构搭建完整
3、编写一个servlet程序
3.1、继承HttpServlet类
这边我们去翻一下源码,最顶层是一个Servlet接口
然后底下是GenericServlet,发现这个类实现了三个接口,重写了Servlet 中的Service方法,里面还有其他的一些方法,这里就不一一解释了
然后再下来就是我们编写程序时候要继承的HttpServlet类,这里边有两个方法doGet ,doPost方法我们编写自己的普通类只需要重写的里边的方法即可
package com.zhang.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//测试Servlet,理解Servlet
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().println("hello servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
3.2、编写Servlet映射
我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器, 所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径
在web.xml文件中编写映射
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.zhang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/s1</url-pattern>
</servlet-mapping>
3.3、配置tomcat
这里要注意tomcat的发布路径就可以了
3.4、启动tomcat,测试即ok
4、Servlet原理
Servlet是由web容器调用,Web容器在接受到浏览器请求后,会生成两个对象,分别是HttpRequest和HttpResponse对象,然后去调用Servlet中的Service方法,request会从这个方法中拿到请求,然后根据是get或者post来调用我们自己编写的Servlet程序中的方法,然后在执行完我们编写的逻辑代码后,将运行的结果封装到response中,然后由web服务器(tomcat或其他)返回给客户端结果。
我们自己编写的Servlet主要执行两个操作:
1、接受并处理请求
2、给出结果及相应信息