Servlet()API解读(笔记)

Servlet API :

由两个软件包组成: 对应于HTTP协议的软件包、对应于除了HTTP协议以外的其他软件包
即Servlet API可以适用于 任何 通信协议。
我们学习的Servlet,是位于javax.servlet.http包中的类和接口,是基础HTTP协议。

继承关系图:

在这里插入图片描述

ServletConfig:接口


package javax.servlet;

public interface ServletConfig {
    java.lang.String getServletName();

    javax.servlet.ServletContext getServletContext();

    java.lang.String getInitParameter(java.lang.String s);

    java.util.Enumeration<java.lang.String> getInitParameterNames();
}

ServletContext getServletContext() : 获取Servlet上下文对象 application
String getInitParameter(String name) : 在当前Servlet范围内,获取名为name的参数值(初始化参数)

进入ServletContext 类

ServletContext中的常见方法(application):
getContextPath():相对路径
getRealPath():绝对路径
setAttribute() 、getAttribute()
String getInitParameter(String name);在当前Web容器范围内(范围更大),获取名为name的参数值(初始化参数)仔细看,在ServletConfig()方法里也有这个方法

比较两个getInitParameter(String name)方法

Servlet2.5

在Web.xml里设置

  <!--  在整个Web容器中 设置初始化参数  -->
<context-param>
	<param-name>globalParam </param-name>
	<param-value>global  value...</param-value>
</context-param>  

  
  <servlet>
    	<servlet-name>WelcomeServlet</servlet-name>
    	<servlet-class>org.lianqiao.servlet.WelcomeServlet</servlet-class>
    	 <!-- 在WelcomeServlet里面设置参数 -->
    	 <init-param>
    	 		<param-name>servletParamname </param-name>
				<param-value>servletparam value...</param-value>
    	 </init-param>
    	 
    	 <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    	<servlet-name>WelcomeServlet</servlet-name>
    	<url-pattern>/WelcomeServlet</url-pattern>
  </servlet-mapping>

在WelcomeServlet 中获取并打印

// 设置在初始化时打印
public class WelcomeServlet extends HttpServlet{
	@Override
	public void init() throws ServletException {
//		获取当前Servlet的初始化参数
		String valueString = super.getInitParameter("servletParamname");
		System.out.println("当前Servlet的参数servletParamname的值是"+valueString);
//		获取当前Web容器的初始化参数
	  ServletContext servletContext	=super.getServletContext();
	  String globalValue = servletContext.getInitParameter("globalParam");
	System.out.println("当前Web容器的参数globalParam的值是"+globalValue);
	}
	
}

结果

------------初始化
当前Servlet的参数servletParamname的值是servletparam value...
当前Web容器的参数globalParam的值是global  value...

Servlet3.0

@WebServlet(value = "/WelcomeServlet" , loadOnStartup = 1 , initParams = {@WebInitParam(name = "servletparaname30",value="servletparavelue 30")})
public class WelcomeServlet extends HttpServlet {
	@Override
	public void init() throws ServletException {
		String valueString = super.getInitParameter("servletparaname30");
		System.out.println("当前Servlet的参数servletparaname30的值是"+valueString);
	}
	
}

结果

当前Servlet的参数servletparaname30的值是servletparavelue 30

但是对于Web容器的配置还是在Web.xml里做相同配置
Servlet3.0方式 给当前Servlet设置初始值:
@WebServlet( .... , initParams= {@WebInitParam(name="serveltparaname30",value="servletparavalue30") } )
注意,此注解只 隶属于某一个具体的Servlet ,因此无法为 整个web容器设置初始化参数 (如果要通过3.0方式设置 web容器的初始化参数,仍然需要在web.xml中设置)
在这里插入图片描述

Service()

在这里插入图片描述

  1. HttpServletRequest中的方法:(同request),例如setAttrite()、getCookies()、getMethod()
  2. HttpServletResponse中的方法:同response

Servlet使用层面:

Eclipse中在src创建一个Servlet,然后重写doGet() doPost()就可以 (doGet() doPost()只需要编写一个)。

发布了22 篇原创文章 · 获赞 2 · 访问量 772

猜你喜欢

转载自blog.csdn.net/qq_43542795/article/details/104024279
今日推荐