一.Tomcat服务器
1. 基本概念
Tomcat本意为公猫的含义,最初是由Sun公司的软件架构师詹姆斯·邓肯·戴维森开发的,后来他帮 助将其变为开源项目并由Sun公司贡献给Apache软件基金会。 Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使 用,是开发和调试Servlet、JSP 程序的首选。
2.Tomcat目录结构:
bin 主要存放二进制可执行文件和脚本。
conf 主要存放各种配置文件。
lib 主要用来存放Tomcat运行需要加载的jar包。
logs 主要存放Tomcat在运行过程中产生的日志文件。
temp 主要存放Tomcat在运行过程中产生的临时文件。
webapps 主要存放应用程序,当Tomcat启动时会去加载该目录下的应用程序。
work 主要存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
3. 启动和关闭
3.1启动方式
使用bin目录下的批处理文件startup.bat来启动Tomcat服务器,若出现一个毫秒数说明启动成功。
3.2关闭方式
使用bin目录下的批处理文件shutdown.bat来关闭Tomcat服务器。
3.3注意事项
启动之前首先安装JDK并配置环境变量JAVA_HOME,若希望Tomcat服务器可以在任意路径启动, 则需要配置环境变量CATALINA_HOME。 启动信息乱码的处理方式:logging.properties文件修改为 java.util.logging.ConsoleHandler.encoding = GBK
3.4配置文件
server.xml文件是服务器的主配置文件,可以设置端口号、设置域名或IP、默认加载的项目、请求 编码等。
|
<Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> |
tomcat-users.xml文件用来配置管理Tomcat服务器的用户与权限 。
|
<role rolename="manager-gui"/> <user username="admin" password="123456" roles="manager-gui"/>
|
|
<role rolename="manager-gui"/> <user username="admin" password="123456" roles="manager-gui"/>
|
二. Servlet的概念和使用
1.基本概念
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写 的服务器端程序,换句话说,Servlet就是运行在服务器上的Java类。 Servlet用来完成B/S架构下客户端请求的响应处理,也就是交互式地浏览和生成数据,生成动态 Web内容。
2.创建Servlet的方式
创建Servlet 主要有四种方式,
2.1方式一实现Servlet接口
(注:前提配置好tomcat)
实现Servlet接口,重写Servlet接口的方法,然后在配置文件web.xml配置对应的映射,
步骤如下:
1.新建包名com.yz,然后在包名新建一个Servlet1类实现Servelet接口的方法。
2.在web.xml配置Servlet映射

3.运行后,浏览器加上Servlet映射名,成功访问,最后打印在控制台。

2.2方式二继承GenericServlet
继承GenericServlet类,重写GenericServlet的方法,然后在配置文件web.xml配置对应的映射。
1.在新建的包名com.yz下新建一个Servlet2类继承GenericServlet类。
2.在web.xml配置Servlet映射

3.运行后,浏览器加上Servlet映射名,成功访问,最后打印在控制台。

2.3方式三继承HttpServlet类
继承HttpServlet类,重写HttpServlet的方法,然后在配置文件web.xml配置对应的映射。
1.在新建的包名com.yz下新建一个Servlet3类继承HttpServlet类。
2.在web.xml配置Servlet映射

3.运行后,浏览器加上Servlet映射名,成功访问,最后打印在控制台。

4.关闭程序,销毁操作开始

2.4使用注解创建Servlet,简单方便不用在web.xml配置映射
1.新建Servlet使用注解方式


2.使用注解建的Servlet为其起个别名

3.运行后,浏览器加上Servlet映射名,成功访问,最后打印在控制台。

三. Servlet接口常用方法
(javax.servlet.Servlet接口用于定义所有servlet必须实现的方法。)
|
方法声明 |
功能介绍 |
|
void init(ServletConfig config) |
由servlet容器调用,以向servlet指示servlet正在 被放入服务中 |
|
void service(ServletRequest req, ServletResponse res) |
由servlet容器调用,以允许servlet响应请求 |
|
ServletConfig getServletConfig() |
返回ServletConfig对象,该对象包含此servlet的初 始化和启动参数 |
|
String getServletInfo() |
返回有关servlet的信息,如作者、版本和版权 |
|
void destroy() |
由servlet容器调用,以向servlet指示该servlet正 在退出服务 |
四. GenericServlet类
一.基本概念
javax.servlet.GenericServlet类主要用于定义一个通用的、与协议无关的servlet,该类实现了Servlet接口。若编写通用servlet,只需重写service抽象方法即可。
二.常用的方法
|
方法声明 |
功能介绍 |
|
abstract void service(ServletRequest req, ServletResponse res) |
由servlet容器调用允许servlet响应 请求 |
五.HttpServlet类
一.基本概念
javax.servlet.http.HttpServlet类是个抽象类并继承了GenericServlet类。 用于创建适用于网站的HTTP Servlet,该类的子类必须至少重写一个方法。
二.常用方法
|
方法声明 |
功能介绍 |
|
void doGet(HttpServletRequest req, HttpServletResponse resp) |
处理客户端的GET请求 |
|
void doPost(HttpServletRequest req, HttpServletResponse resp) |
处理客户端的POST请求 |
|
void init() |
进行初始化操作 |
|
void service(HttpServletRequest req, HttpServletResponse resp) |
根据请求决定调用doGet还是 doPost方法 |
|
void destroy() |
删除实例时释放资源 |
六.Servlet的生命周期

1.构造方法只被调用一次,当第一次请求Servlet时调用构造方法来创建Servlet的实例。
2. init方法只被调用一次,当创建好Servlet实例后立即调用该方法实现Servlet的初始化。
3. service方法被多次调用,每当有请求时都会调用service方法来用于请求的响应。
4. destroy方法只被调用一次,当该Servlet实例所在的Web应用被卸载前调用该方法来释放当前占用 的资源。
七.重定向和转发的区别
重定向:例如:客户端(A)向服务端(B)发送一个请求,服务端(B)接收到请求后又给客户端(B)发了一个消息,让客户端(A)去请求(C)页面。
转发:例如: 客户端(A)向服务端(B)发送一个请求, 服务端(B)接收到请求去请求了服务端(D)拿到信息,然后给了客户端(A)。
重定向特点:
重定向之后,浏览器地址栏的URL会发生改变; 重定向过程中会将前面Request对象销毁,然后创建一个新的Request对象;重定向的URL可以是其它项目工程。
转发的特点:
转发之后浏览器地址栏的URL不会发生改变; 转发过程中共享Request对象; 转发的URL不可以是其它项目工程。
八.Servlet线程安全
1.服务器在收到请求之后,会启动一个线程来进行相应的请求处理。
2. 默认情况下,服务器为每个Servlet只创建一个对象实例。当多个请求访问同一个Servlet时,会有 多个线程访问同一个Servlet对象,此时就可能发生线程安全问题。
3.多线程并发逻辑,需要使用synchronized对代码加锁处理,但尽量避免使用。
九.状态管理
Web程序基于HTTP协议通信,而HTTP协议是”无状态”的协议,一旦服务器响应完客户的请求之后,就断开连接,而同一个客户的下一次请求又会重新建立网络连接。
服务器程序有时是需要判断是否为同一个客户发出的请求,比如客户的多次选购商品。因此,有必要跟踪同一个客户发出的一系列请求。把浏览器与服务器之间多次交互作为一个整体,将多次交互所涉及的数据保存下来,即状态管理。多次交互的数据状态可以在客户端保存,也可以在服务器端保存。状态管理主要分为以下两类:
客户端管理:将状态保存在客户端。基于Cookie技术实现。
服务器管理:将状态保存在服务器端。基于Session技术实现。
Cookie的概念: 浏览器向服务器发送请求时,服务器将数据以Set-Cookie消息头的方式响应给浏览器,然后浏览器 会将这些数据以文本文件的方式保存起来。 当浏览器再次访问服务器时,会将这些数据以Cookie消息头的方式发送给服务器。
Cookie特点: Cookie技术不适合存储所有数据,程序员只用于存储少量、非敏感信息,原因如下: 将状态数据保存在浏览器端,不安全。 保存数据量有限制,大约4KB左右。 只能保存字符串信息。 可以通过浏览器设置为禁止使用。
Cookie的路径问题: 浏览器在访问服务器时,会比较Cookie的路径与请求路径是否匹配,只有匹配的Cookie才会发送给服务器。
Cookie的默认路径等于添加这个Cookie信息时的组件路径,例如:/项目名/目录/add.do请求添加了一个Cookie信息,则该Cookie的路径是 /项目名/目录。
访问的请求地址必须符合Cookie的路径或者其子路径时,浏览器才会发送Cookie信息。
Session概念: Session本意为"会话"的含义,是用来维护一个客户端和服务器关联的一种技术。 浏览器访问服务器时,服务器会为每一个浏览器都在服务器端的内存中分配一个空间,用于创建一 个Session对象,该对象有一个id属性且该值唯一,我们称为SessionId,并且服务器会将这个 SessionId以Cookie方式发送给浏览器存储。 浏览器再次访问服务器时会将SessionId发送给服务器,服务器可以依据SessionId查找相对应的 Session对象。
Session生命周期: 为了节省服务器内存空间资源,服务器会将空闲时间过长的Session对象自动清除掉,服务器默认的超时限制一般是30分钟。
使用javax.servlet.http.HttpSession接口的成员方法实现失效实现的获取和设置。
|
方法声明 |
功能介绍 |
|
int getMaxInactiveInterval() |
获取失效时间 |
|
void setMaxInactiveInterval(int interval) |
设置失效时间 |
可以配置web.xml文件修改失效时间。
|
<session-config> <session-timeout>30</session-timeout> </session-config> |
Session的特点:
1.数据比较安全。
2.能够保存的数据类型丰富,而Cookie只能保存字符串。
3.能够保存更多的数据,而Cookie大约保存4KB。
4.数据保存在服务器端会占用服务器的内存空间,如果存储信息过多、用户量过大,会严重影响服务器的性能。
十.JSP语法
1.声明区
基本语法:
说明:可以定义全局变量、方法、类。
2.程序代码去
基本语法:<%程序代码%>
说明:可以定义局部变量以及放入任何的Java程序代码。
|
<% int j; for (int k=0; k<10; k++) { … … } %>
|
3.表达式
基本语法:<%=.....%>
说明:可以输出一个变量或一个具体内容,但=后面必须是字符串变量或者可以被转换成字符串的表达式。
4.注释
|
格式: <!--……--> HTML文件的注释,浏览器可以查看到 <%--……--%> JSP文件的注释,浏览器看不到 <%//… …%> Java语言中的单行注释,浏览器看不到 <%/*……*/%> Java语言中的多行注释,浏览器看不到 注释的内容不会被执行
|
十一.Jsp内置对象
在JSP程序中有9个内置对象由容器为用户进行实例化,程序员可以不用定义就直接使用这些变量。 在JSP转换成Servlet后,会自动追加这些变量的定义,使用内置对象可以简化JSP的开发。
对象名称如下:
|
对象变量 |
对象类型 |
作用 |
|
out |
JSPWriter |
输出流 |
|
request |
HttpServletRequest |
请求信息 |
|
response |
HttpServletResponse |
响应信息 |
|
session |
HttpSession |
会话 |
|
application |
ServletContext |
全局的上下文对象 |
|
pageContext |
PageContext |
JSP页面上下文 |
|
page |
Object |
JSP页面本身 |
|
config |
ServletConfig |
Servlet配置对象 |
|
exception |
Throwable |
捕获网页异常 |
本文介绍了Tomcat服务器的基础知识,包括启动和配置方法。同时详细解析了Servlet的基本概念、创建方式及生命周期,对比了重定向与转发的区别,并探讨了状态管理和JSP的相关知识。
1038

被折叠的 条评论
为什么被折叠?



