servlet学习(一)

  • tomcat目录说明

  1. bin--存放tomcat的批处理文件(startup.bat--启动服务  shutdown.bat--关闭服务)
  2. conf--存放tomcat的配置文件(server.xml)
  3. lib--存放tomcat中web应用需要的JAR包
  4. logs--存放tomcat的日志
  5. temp--存放临时文件
  6. webapps--存放web应用(编译好的
  7. works--存放web应用

 

  • 修改端口号(端口被占用)

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
访问端口
<Server port="8005" shutdown="SHUTDOWN">
关闭端口
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
外部程序调用端口

  • servlet的生命周期

构造器:第一次请求Servlet的时候被WEB容器调用,而且只调用一次(一个Servlet在容器中只有一个实例)
init()--初始化Servlet(第一次被请求的时候调用)
service()--处理请求,并将请求结果进行返回。(每次被请求的时候调用)
destory()--servlet被从WEB容器中卸载的时候调用(调用一次)

根据Servlet的生命周期,可以知道,一个Servlet在web应用只有一个实例,这个实例被多个线程共享。 servlet采用的是单实例,多线程模式,即在同一时刻,容器中只存在某servlet的一个实例;同时,多请求(用户)会获得多个线程来运行同一个实例。

  • servlet体系结构

  • servlet容器

  1. Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。Servlet被编译为平台独立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行。
  2. 在上述中,出现了一个概念“Servlet容器”。那么什么是Servlet容器呢?Servlet容器有时候也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。Servlet不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包容和管理Servlet。
  3. 在JSP技术推出后,管理和运行Servlet/JSP的容器也称为Web容器。Servlet容器、JSP容器,以及Web容器是同义的。 用户通过单击某个链接或者直接在浏览器的地址栏中输入URL来访问Servlet,Web服务器接收到该请求后,并不是将请求直接交给Servlet,而是交给Servlet容器。Servlet容器实例化Servlet,调用Servlet的一个特定方法对请求进行处理,并产生一个响应。这个响应由Servlet容器返回给Web服务器,Web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器
  • Servlet的功用

​​​​​​​·读取客户程序发送来的显式数据(表单数据)  

·读取客户程序发送来的隐式数据(请求报头)

 ·生成相应的结果  

·发送显式的数据给客户程序(HTML)  

·发送隐式的数据给客户程序(状态代码和响应报头)​​​​​​​

  • 实现一个servlet步骤

​​​​​​​1.实现Servlet接口 HelloServlet implements Servlet
2.实现接口中定义的方法
3.web.xml配置 servlet及servlet映射
4.通过浏览器访问

  •  

    web.xml配置

​​​​​​​<servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>cn.goktech.demo01.HelloServlet</servlet-class>
        <!-- 通过load-on-startup改变Servlet实例的创建时机 -->
        <load-on-startup>2</load-on-startup>
    </servlet>

通过load-on-startup可以改变servlet实例创建时机,越靠近0越先被创建(详细说明点击

<servlet-mapping>
    <servlet-name>helloServlet</servlet-name>
    <url-pattern>/hi</url-pattern>
</servlet-mapping>
1.一个servlet-name可以配置多个mapping
2.可以通过*通配符拦截所有所有请求
    <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    注意:* 和/不能共存

  • 获取参数配置

ServletConfig-获取局部Servelt参数配置
   <init-param>
      <param-name>user</param-name>
      <param-value>root</param-value>
    </init-param>
    <init-param>
      <param-name>pass</param-name>
      <param-value>123456</param-value>
    </init-param>
    
    Enumeration enu = sc.getInitParameterNames();
    while(enu.hasMoreElements()){
    String paraName =  (String) enu.nextElement();
    System.out.println(sc.getInitParameter(paraName));
    
ServletContext--获取全局配置
  <context-param>
      <param-name>name</param-name>
      <param-value>test</param-value>
  </context-param>
  <context-param>
      <param-name>pass</param-name>
      <param-value>123456</param-value>
  </context-param>
  
  Enumeration<String> enu2 =  sct.getInitParameterNames();
        while(enu2.hasMoreElements()){
        String paraName =  enu2.nextElement();
        System.out.println(sct.getInitParameter(paraName));
    }

 

  • 详细代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>MyfirstWebPro</display-name>
	<!-- <welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
 -->
	<!-- 全局的参数配置 -->
	<context-param>
		<param-name>password</param-name>
		<param-value>123</param-value>
	</context-param>

	<servlet>
		<servlet-name>MyfirstServlet</servlet-name>
		<servlet-class>cn.gok.test.MyfirstServlet2</servlet-class>
		<init-param><!-- 局部的参数配置 -->
			<param-name>user</param-name>
			<param-value>chen</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup><!-- 控制servlet被加载的时间 -->
	</servlet>

	<servlet-mapping>
		<servlet-name>MyfirstServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>MyfirstServlet</servlet-name>
		<url-pattern>/hi</url-pattern>
	</servlet-mapping>
</web-app>
public class MyfirstServlet2 extends HttpServlet {

	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		System.out.println("执行操作");
		ServletConfig sc=this.getServletConfig();
		String ttt=sc.getInitParameter("user");
		System.out.println(ttt);
		
		ServletContext sct=sc.getServletContext();
		System.out.println(sct.getInitParameter("password"));
	}
}

​​​​​​​

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值