Servlet涉及到的API

实现Servlet的三种方式:

1、Servlet

无状态的Servlet,需要重写init,getServletConfig, service, getServletInfo, destroy方法

2、GenericServlet

无状态的Servlet,只需要重写service方法

3、HttpServlet

针对http协议的Servlet,在其service方法中,根据getMethod方法获得实际请求的方法类型,执行了不同的方法,也就是doGet,doPost,doPut,doDelete方法

 

Servlet在启动服务器时加载init()方法的方式:

Servlet2.5

在web.xml文件中的<servlet>中配置<load-on-startup>1</load-on-startup>,这里的1代表第一个加载firstServlet这个Servlet。

web.xml

<servlet>
  	<servlet-name>firstServlet</servlet-name>
  	<servlet-class>cn.nenu.controller.firstServlet</servlet-class>
  	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>firstServlet</servlet-name>
  	<url-pattern>/firstServlet</url-pattern>
</servlet-mapping> 

Servlet3.0

在Servlet中的注解中添加 loadOnStartup = 1即可,这里的1和上面的一样。

@WebServlet(value = "/HelloServlet", loadOnStartup = 1)
public class HelloServlet extends HttpServlet {
	
    public void init() throws ServletException {
    	System.out.print("init()...");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

配置Servlet的方式:

servlet2.5

在web.xml中配置<context-param>来设置web容器初始参数,在<servlet>中配置<init-param>为该servlet设置初始参数。

web.xml

        <context-param>
	    <param-name>webParam</param-name>
	    <param-value>webParam</param-value>
	</context-param>
	
	<servlet>
	    <servlet-name>helloServlet</servlet-name>
	    <servlet-class>cn.nenu.controller.HelloServlet</servlet-class>
	    <init-param>
	        <param-name>servletParam</param-name>
	        <param-value>servletParam</param-value>
	    </init-param>
	</servlet>
	<servlet-mapping>
	    <servlet-name>helloServlet</servlet-name>
		<url-pattern>/helloServlet</url-pattern>
	</servlet-mapping>

servlet3.0

在Servlet中的注解中添加 initParams = {@WebInitParam(name = "servletParam",value = "servletParam")}设置servlet初始参数,但是web容器的初始参数不可通过注解方式配置,只能通过2.5的原方式来配置(web.xml中配置)。

@WebServlet(value = "/HelloServlet", initParams = {@WebInitParam(name = "servletParam",value = "servletParam")})
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doGet(request, response);
    }

}

Servlet的初始化方法中获取初始化参数的方式:

(以获取以上设置的初始参数为例)

public void init() throws ServletException {
    //获取当前Servlet的初始化参数
    String servletParamValue = super.getInitParameter("servletParam");
	
    //获取web容器的初始化参数
    ServletContext servletContext = super.getServletContext();
    String webParamValue = servletContext.getInitParameter("webParam");
}

解决Servlet线程安全问题:

  • synchronized,效率低不建议使用
  • 实现SingleThreadModel接口,每个线程都会创建一个servlet实例,但是servlet响应客户端请求的效率太低,所以已经淘汰。
  • 尽可能使用局部变量

 

ServletContext

ServletContext概述

  • 全局对象,也有作用域,对应一个Tomcat中的web应用
  • 当web服务器启动时,会为每个web应用创建一块共享的存储区域(ServletContext)、
  • 在服务器启动时创建,关闭时销毁。

获取ServletContext对象的三种方式:

  • 通过GenericServlet提供的getServletContext()方法。this.getServletContext();
  • 通过HttpServletRequest提供的getServletContext()方法。
  • 通过HttpSession提供的getServletContext()方法。

ServletContext的作用:   

  • 获取项目的真实路径(全路径):getRealPath("/");
  • 获取当前项目的上下文路径(也就是项目名称):getContextPath()【这里也可以通过request.getContextPath()来获取】
  • 也可以作为全局容器使用,也是键值对的形式,应用场景比如统计项目被访问的次数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值