Servlet简述

MVC设计模型

M:模型(Model) 处理业务逻辑或者数据。

V:视图(View) 界面展示,人机交互

C:控制器(Controller) 视图、模型的选择;接收请求,将请求交由模型进行处理,再将模型的处理结果返回给发起请求的用户。

在这里插入图片描述
其中视图使用HTML、js、css、jsp、jQuery等前端技术实现;模型使用JavaBean实现;控制器则通常采用Servlet实现。

Servlet使用步骤

简单来说Servlet就是一个java类,但是它必须满足一下两点:

  1. 必须继承 java.servlet.http.HttpServlet
  2. 重写了其中的doGet()或doPost()方法
    doGet()用于接受并处理所有的get提交方式的请求
    doPost()用于接受并处理所有的post提交方式的请求

1.编写自定义Servlet,继承HttpServlet

在src中新建一个java文件

package servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class WelcomeServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("servlet");
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doGet(req, resp);
	}
}

2.Servlet配置

Servlet类不能直接访问,使用前必须配置。

  • Servlet2.5版本
    配置web.xml
    注意两个servlet-name值要相同
    servlet-class值为:包名.类名
<servlet>
  	<servlet-name>WelcomeServlet</servlet-name>
  	<servlet-class>servlet.WelcomeServlet</servlet-class>
</servlet>
  
<servlet-mapping>
  	<servlet-name>WelcomeServlet</servlet-name>
  	<url-pattern>/WelcomeServlet</url-pattern>
</servlet-mapping>
  • Servle3.0版本
    (无需修改Web.xml)在自定义Servlet类上方编写注解@WebServlet(value = “url-pattern” )
    url-pattern即为请求的地址
@WebServlet(value = "/WelcomeServlet31" )
public class WelcomeServlet31 extends HttpServlet 

Servlet 生命周期

  1. 加载
  2. 初始化:init(),该方法会在Servlet第一次被加载并实例化以后执行
  3. 服务: service() ,实际上是执行doGet()\doPost()
  4. 销毁:destroy(),Servlet被系统回收时自动执行(关闭Tomcat)
  5. 卸载

加载、卸载都由系统来执行,我们只需关注初始化、服务和销毁。

init():默认第一次访问servlet时执行,也可修改为Tomcat启动时自动执行。
方法如下

  1. Servlet2.5

在Web.xml中添加:
值为初始化顺序(有多个servlet时)

<servlet>
  	......
  	
  	<load-on-startup>1</load-on-startup>
</servlet>
  1. Servlet3.0
@WebServlet(value = "/WelcomeServlet31" , loadOnStartup = 1 )

Servlet API

Servlet继承关系

在这里插入图片描述
GenericServlet对Servlet中的方法进行了简单实现或者空实现。这样我们在编写自己的servlet的时候就不必编写所有的抽象方法了。

Servlet中的对象

HttpServletRequest 请求对象:获取请求信息
HttpServletResponse 响应对象: 设置响应对象
ServletConfig对象 servlet配置对象
ServletContext对象  servlet的上下文对象

HttpServletRequest 、HttpServletResponse方法同request、response

ServletContext对象中的常见方法:
getContextPath():获取相对路径
getRealPath():绝对路径
setAttribute()、getAttribute()
String getInitParamter(String name):在当前Web容器范围内获取名为name的参数值
(servlet对象的getInitParamter(String name)获取当前Servlet中名为name的参数值)

设置当前Servlet初始化参数的方法:

  • Servlet2.5
    在Web.xml中:
<servlet>
  	<servlet-name>WelcomeServlet</servlet-name>
  	<servlet-class>servlet.WelcomeServlet</servlet-class>
  	<!-- 设置当前servlet初始化参数 -->
  	<init-param>
  		<param-name>ServletParamName</param-name>
  		<param-value>ServletParamvalue....</param-value>
  	</init-param>
  	
  	<load-on-startup>1</load-on-startup>
  	
</servlet>
  • Servlet3.0
    @WebServlet(…, initParams = {@WebInitParam(name=“ServletParamName”,value = “ServletParamValue31”)})
@WebServlet(value = "/WelcomeServlet31" , loadOnStartup = 1 ,
	initParams = {@WebInitParam(name="ServletParamName",value = "ServletParamValue31")})

在整个Web容器中设置初始化参数:

由于设置的是全局属性,所以不管是2.5版本还是3.0版本都需在web.xml中配置

<!-- Web容器初始化参数 -->
  <context-param>
  	<param-name>globalName</param-name>
  	<param-value>globalValue31</param-value>
  </context-param>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值