-
tomcat目录说明
- bin--存放tomcat的批处理文件(startup.bat--启动服务 shutdown.bat--关闭服务)
- conf--存放tomcat的配置文件(server.xml)
- lib--存放tomcat中web应用需要的JAR包
- logs--存放tomcat的日志
- temp--存放临时文件
- webapps--存放web应用(编译好的
- 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容器
- Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。Servlet被编译为平台独立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行。
- 在上述中,出现了一个概念“Servlet容器”。那么什么是Servlet容器呢?Servlet容器有时候也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。Servlet不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包容和管理Servlet。
- 在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"));
}
}