什么是servlet
先看一下百度百科的定义:
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
从开发的角度去理解,一个servlet就是一个接口,匹配对应的URL,实现对请求的处理响应数据
servlet的运行流程
如下图
大白话描述一下就是
- 请求者(浏览器也可以是其他应用)通过一个URL地址发起HTTP请求
- URL地址信息可以指向对应的服务器,服务器接收到请求后发送给对应的servlet处理
- servlet处理后将响应信息返回到服务器
- 服务器将响应信息返回给请求者
- 请求者做出展示
代码走一走
本人使用额是IDEA跑一下,所以前边的创建项目一起写下来
-
create new project,选择 Java Enterprise 然后配置JDK,Tomcat,选择Web Aplication,注意要勾选Creat web.xml
-
因为IDEA不像Eclipse会自动创建classes和lib文件夹,需要我们手动创建并指定(注意要指定)
-
配置Tomcat
-
启动,测试
上servlet代码
HelloServlet类:
package cn.berger.servlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import java.io.IOException; public class HelloServlet extends HttpServlet { @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("servlet执行了"); } }
web.xml的配置
~~~xml
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>cn.berger.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
xml的配置应该都理解,这里的servlet和servlet-mapping标签是一对,通过同一个servlet-name将url-pattern(url匹配规则)和处理请求的servlet-class关联起来,这样在浏览器访问对应的URL时,servlet类就会运行service方法(底层通过反射操作的)
可以看到控制台有输出,但是输出乱码了,我们可以在配置Tomcat的时候增加VM option命令-Dfile.encoding=UTF-8
重新启动后,运行查看控制台输出如下:
Bingo!