第3章 Tomcat&servlet

1.BS与CS

*CS:客户端服务器架构模式

   优点:充分利用客户端机器的资源,减轻服务器的负荷

   缺点:需要安装;升级维护成本较高

*BS:浏览器服务器架构模式

   优点:客户端不需要安装,维护成本较低

   缺点:所有计算和存储任务都是放在服务器端尽心的,服务器负荷较重;在服务器端计算完成之后把结果再传给客户端,因此客户端和服务器端会进行非常频繁的数据通信,从而网络负荷较重

2.Tomcat简介

*Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

*部署(deploy):把一个项目放到web容器里,项目的名字是context root

*Tomcat目录结构:

   bin:可执行文件目录

   conf:配置文件目录

   lib:存放lib的目录

   logs:日志文件目录

   webapps:项目部署的目录

   work:工作目录

   temp:临时目录

*配置java环境变量,双击bin目录下的startup.bat启动Tomcat

(启动成功)

*http://localhost:8080/,访问Tomcat主页,确定启动成功

3.IDEA下操作Tomcat

(1)新建项目/模块->右键,add Framework Support->选择Web Application->ok

 (2)在web下新建html文件,文件与WEB-INF同级:

(3)部署到Tomcat上

   首先在IDEA上配置Tomcat,点击Add

 点左上角加号,找到Tomcat Server-local

 选择Tomcat文件位置,到bin上一级,点击Apply

 

 选择Deployment,点击+,点击Artifact,找到要部署的项目

 可以任意修改项目名,点击Apply

 

热部署,Apply

(4)debug测试

   点击右上角的debug进行测试

4.Servlet入门

(1)add.html

 (2)写AddServlet类,继承HttpServlet,HttpServlet是外部类,需要导入Tomcat依赖:

 (3)在WEB-INF下的web.xml里写入映射关系

(4)创建DAO、Bean、连接数据库

(5)在servlet里写入相应操作

5.servlet中文乱码

6.Servlet继承关系

*HttpServlet->GenericServlet->Servlet

*Servlet中的核心方法:init()、service()、destory()

*service()方法:

   当有请求过来时,service方法会自动响应(其实是tomcat容器调用的)

   在HttpServlet中会分析请求的方式:get/post/head/delete···,再决定调用哪个do开头的方法

   自己创建的子类一定要重写doxxx方法,否则会出现405页面

7.Servlet生命周期

*生命周期:从出生到死亡的过程,对应Servlet中的三个方法:init()、service()、destroy()

*默认情况下:

   第一次接收请求时,Servlet会进行实例化(调用构造方法)、初始化、服务

   从第二次请求开始,每次都只调用服务

   当容器关闭时,其中的所有servlet实例会被销毁,调用销毁方法

*可以通过<load-on-startup>来设置servlet启动的先后顺序,数字越小启动越早,最小值是0

*Servlet在容器中是单例的、线程不安全的

8.HTTP协议

*HTTP:超文本传输协议

*客户端向服务器端发送http请求,请求包含三个部分:

   请求行、请求头(请求消息头)、请求体

   *请求行包含三个信息:

      请求的方式、请求的url、请求的协议(一般都是HTTP1.1)

   *请求消息头中包含了很多客户端要告诉服务器的信息,比如浏览器型号、版本、接收内容的类型

   *请求体分三种情况:

      get方式,没有请求体,但有一个queryString

      post方式,有请求体,form data

      json格式,有请求体,request payload

*响应也包含三个部分:

   响应行、响应头、响应体

   *响应行包含三个信息:

      协议、响应状态码(200正常响应、404找不到资源、405请求方式不支持、500服务器内部错误)、响应状态

   *响应头包含服务器的信息

   *响应体响应的实际内容

9.session

*HTTP无状态:服务器无法判断两次请求是否来自于同一个客户端

*通过会话跟踪技术解决无状态问题

*会话跟踪技术:

   客户端第一次给服务器发送请求时,服务器获取session获取不到,则创建新的响应给客户端

   客户端再次给服务器发送请求时,会把session带给服务器,服务器判断这次和上次的session一样,则为同一个客户端

   常用的API:

   request.getSession()->获取当前session,如果没有则创建一个

   session.getId()->获取session的id

   session.isNew()->判断当前session是否是新的

   session.getMaxInactiveInterval()->session的非激活间隔时长,默认1800秒

   session.setMaxInactiveInterval()->

   session.invalidate()->强制性让会话失效

*session测试:

 访问两次:

 输出结果:

10.session保存/获取作用域

*常用的API:

   session.setAttribute(k,v)//设置作用域

   session.getAttribute(k)//获取作用域

   removeAttribute(k)//删除作用域

11.服务器内部转发以及客户端重定向

*服务器内部转发:

 *客户端重定向:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃桃tao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值