tomcat和Servlet

# tomcat

服务器:装有服务器软件的计算机
服务器软件:接收用户请求,处理请求,作出响应


常见的服务器软件:

1、WebLogic:Oracle公司的大型收费服务器
2、WebSphere:IBM公司的大型收费服务器
3、tomcat:apache组织的一款开源免费的中小型服务器

tomcat的安装:

1、安装:解压到纯英文目录下

bin:执行文件
conf:配置文件
lib:依赖jar包
logs:日志文件
temp:临时文件
webapps:项目的存放位置


2、开启:

在bin目录下运行 startup.bat



3、调式:

将项目放到webapps目录下
在浏览器中输入http://ip地址:端口号/项目名/访问的资源
4、关闭:

5、卸载


# Servlet

## 1.1、概述

Servlet是运行在Java服务器的小程序。
它提供了一套是java类可以被浏览器(tomcat)所识别的规则

## 1.2、 使用步骤

1、创建类实现Servlet接口
2、实现抽象方法
3、在web.xml配置映射文件


## 1.3、 执行步骤

1、前端页面点击提交按钮,将表单信息提交到指定的action
2、action中的地址会在web.xml中查找是否有与之匹配的<servlet-mapping>中的<url-pattern>
3、如果有则查找是否有对应的<servlet>中的<servlet-name>与<url-pattern>中的<servlet-name>一致
4、如果有

## 1.4、 servlet的生命周期

1、init:只有第一次访问的时候会执行
2、service:每次访问都会执行,获取请求,作出响应
3、destroy:服务器正常关闭时执行,进行资源的释放


## 1.5 HttpServlet

## 二、Request

1、getParameter(name):通过name值后去唯一的value值
2、getParameterValues(name),通过name值去获得value的字符串数组

## 三、请求转发

步骤:
1、获取请求转发器
RequestDispatcher dispacher=request.getRequestDispatcher("路径");

2、执行转发器的转发功能
dispacher.forward(request,response);


细节:
1、请求转发只能访问服务器内部资源
2、地址栏不发生变化
3、请求转发只执行了一次请求


共享数据:

域对象:可以在指定生命周期内共享数据的对象

Request域:作用范围仅在一次请求中
如果使用的是请求转发,转发后的页面也可以拿到request对象中的数据
如果使用的是重定向,转发后的页面是获取不到request对象中的数据的,重定向进行了两次请求

通用方法:

1、setAttribute(String,Object):向域中存储键值对

2、getAttribute(String):从域中通过键获取值

3、removeAttribute(String):移除域中的键和值

# 三、 Response

## 3.1 响应行

版本/协议
响应状态码:描述请求和响应的信息 3位数,设置状态码用response.setStatus

1xxx:表示服务器接收到了客户端的数据但是没有接受完毕

2xxx:表示成功(200)

3xxx:表示重定向(302),访问缓存(304)

4xxx:访问资源找不到(404),指定的访问方式没有对应的doxxx()方法(405)

5xxx:服务器内部错误(500)

状态码描述


## 3.2 响应头
格式:
键 值(路径)
常见的响应头:serHeader(键,值)

1、location:表示重定向的位置

1、设置响应行的状态码为302
response.setStatus(302);
2、设置重定向的位置:
response.setHeader(location,"地址");
简单的写法:
response.redirect("地址");

2、content-type


## 3.3 响应体

响应的数据

1、使用字符输出流

response.getWrite().write("内容");

2、使用字节输出流

response.getOutputStream().write();

## 四、请求转发和重定向

### 4.1 请求转发

ResquestDispatcher dispatcher = request.getResquestDispatcher("地址")
dispatcher.forward(request,response);

### 4.2 重定向

response.sendRedirect("地址")


### 4.3 区别

1、请求转发地址栏不变,重定向改变
2、重定向可以访问外部资源,请求转发不能
3、请求转发只请求一次,重定向请求两次
4、请求转发后的页面可以获取请求域中的数据,重定向不能
5、请求转发(访问一次)的性能优于重定向(访问两次)


代码改变生活
原文地址:https://www.cnblogs.com/LTJAVA/p/11870753.html