Java_Web_Servlet复习总结

本文详细介绍了Servlet的概念、生命周期、创建方式及线程安全性等核心内容,并解释了ServletConfig与ServletContext的作用。
1、什么是Servlet?

  servlet是运行在Web服务器中的小型Java程序(即:服务器端的小应用程序)。
  servlet通常通过HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

2、Servlet生命周期?

   实例化--->初始化--->服务--->销毁    实例化和初始化是第一次访问servlet时同时进行的。

3、Servlet的三种创建方式?

  <1>.实现javax.servlet.Servlet接口
  <2>.继承javax.servlet.GenericServlet类
  <3>.继承javax.servlet.http.HttpServlet类(常用)

Servlet --> GenericServlet --> HttpServlet  (继承HttpServlet)
 曾祖父         爷爷            爸爸               孙子


4、Servlet的线程安全?

  单实例:每次访问多线程
  解决线程安全问题的最佳办法,不要写全局变量,而写局部变量。

5、ServletConfig的作用?

<1>获取Servlet的配置信息

web.xml

      <servlet>
  		<servlet-name>MyServletTest</servlet-name>
  		<servlet-class>com.bh.MyServletTest</servlet-class>
  		<init-param>
  			<param-name>encoding</param-name>
  			<param-value>UTF-8</param-value>
  		</init-param>
  	</servlet>
  	<servlet-mapping>
  		<servlet-name>MyServletTest</servlet-name>
  		<url-pattern>/MyServletTest</url-pattern>
  	</servlet-mapping>
方式一:

private ServletConfig config;
	
	@Override
	public void init(ServletConfig config) throws ServletException {
		this.config = config;
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String encoding = config.getInitParameter("encoding");
		System.out.println("encoding:"+encoding); //UTF-8
	}

方式二:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String encoding = this.getServletConfig().getInitParameter("encoding");
		System.out.println("encoding:"+encoding); //UTF-8
	}

方式三:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String encoding = this.getInitParameter("encoding");
		System.out.println("encoding:"+encoding); //UTF-8
	}
<2> 获取ServletContext

6、ServletContext

<1>获取方式

            ① servletConfig.getServletContext()
            ② request.getServletContext()

<2>作用

           ①获取当前域对象的共享数据 setAttribute getAttribute rmoveAttribute

                   ServletContext代表的是整个应用。一个应用只有一个ServletContext对象。单实例。

           ②获取全局配置信息

    <context-param>
                 <param-name>encoding</param-name>
                 <param-value>UTF-8</param-value>
           </context-param>

            String encoding = servletContext.getInitParameter("encoding");

           ③获取资源路径(可以得到当前应用任何位置的任何资源)

   String path = servletContext.getRealPath("/");
         //  “/” 表示当前应用 E:\develop\Tomcat 8.0\Filter\
     String contextPath = servletContext.getContextPath();
         //   /Filter

④实现转发
     ServletContext servletContext = req.getServletContext();
     RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/index.jsp");
     requestDispatcher.forward(req,resp);

   通过参数传过来的对象,就叫依赖     通过方法得到的对象,就叫关联







评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值