Jsp+Servlet基础

本文介绍了Tomcat服务器的基础知识,包括启动和配置方法。同时详细解析了Servlet的基本概念、创建方式及生命周期,对比了重定向与转发的区别,并探讨了状态管理和JSP的相关知识。

一.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

捕获网页异常

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值