本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Servlet技术
一.Servlet技术
Servlet是javaEE接口之一、Servlet是运行在服务器上的一个java小程序,servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求,它可以接受客户端发送过来的请求,并响应数据给客户端。 1.Servlet是javaweb的三大组件之一、三大组件有Servlet程序、Filter过滤器、Listener监听器
二.实现Servlet程序
- 编写一个类去实现Servlet接口
- 实现service方法,处理请求,并响应数据
- 到web.xml里面配置Servlet程序的访问地址 其中service最为重要
public class servlet1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/*
* service方法是专门用来处理请求和响应的
* */
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service被访问了");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
web.xml配置为的是在Tomcat服务器进行访问到Servlet程序
<!--servlet标签给Tomcate配置servlet程序-->
<servlet>
<!--servlet-name标签Servlet程序起一个别名(使用类名比较好)-->
<servlet-name>servlet1</servlet-name>
<!--servlet-class是servlet程序起的全类名-->
<servlet-class>com.content.Dome.servlet1</servlet-class>
</servlet>
<!--servlet-mapping标签给servlet程序配置访问地址-->
<servlet-mapping>
<!--servlet-name标签的作用是告诉服务器、我当前配置的地址给那个Servlet程序使用-->
<servlet-name>servlet1</servlet-name>
<!--url-pattern标签配置访问地址
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程名
/servlet 表示http://ip:port/工程名/servlet
-->
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
:Servlet是如何通过Tomcat进行访问的呢!
| 客户端(游览器) | 服务器 硬件 电脑 IP地址 | |
|---|---|---|
| http://localhost:8080/servlet1/servlet | ||
| localhost是服务器ip | 通过IP地址定位服务器 | |
| :8080是服务器端口号 | 端口号定位Tomcat | |
| /servlet1 是工程路径 | 通过工程路径确定访问那个工程 | |
| /servlet 资源路径 | 资源路径执行Java中servlet的service的代码段 |
三.Servlet声明周期
- 执行servlet构造器 --->项目执行会被创建
- 执行init初始化方法 --->执行时就进行初始化
- 执行service方法 --->项目存在时会一直执行service方法
- 执行destroy销毁方法 -->游览器停止时执行销毁方法
public class ServletTest implements Servlet {
public ServletTest() {
System.out.println(" 1 构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2 初始化方法 init");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3 服务方法 service");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("4 销毁方法 destroy");
}
}
四.GET和POST请求的分发处理
1.在实现Serlvet类中的service方法获取表单的请求方式
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
//获取GET和POST方法,需要先进性类型转换(因为里面有getMethod方法)
HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
//获取请求方式
String method = httpServletRequest.getMethod();
System.out.println("method");
}
2.大多数的开发为继承HttpServlet去获取Get和Post方法
public class ServletTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是Get方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是POST方法");
}
一般开发中为继承HttpServlet方法