服务器

简介

分类
B/S browser service
对带宽要求更高(即便都联网情况下,CS的图片等资源已经下载好,只需要很少流量资源)
C/S

C/S client service
对内存、硬盘存储容量要求高
画面更加精致

网络编程三要素

要素特点作用注意事项
ip唯一的标识网络中的设备
端口号唯一的标识设备上的应用范围0~65535
系统应用通常是 0 ~1024
传输协议网络中数据传输的规范主要包括 http tcp udp

服务器
服务器软件:tomcat 等(接收请求并响应)(tomcat是Apache的)
还有Oracle的webLogic 等

服务器:装有服务器软件的计算机

tomecat目录结构
bin可执行文件
webapps项目存放
lib依赖包
temp临时文件
logs日志文件

前后端交互基本流程
前后端交互TEST
1.配置
数据库依赖包
数据库连接驱动
c3p0依赖包
c3p0和web的xml文件

2.绘制前端
首页
功能页面

3.后端功能实现
JDBCutils,Dao,Daoimpl等

4.实现前后端连接
创建servlet类(继承HTTPservlet重写doget dopost方法 或 实现Servlet接口重写5个方法),调用Dao对象的不同对应方法,分别对应设置为各个表单页面的提交路径

Request 和 Response

在这里插入图片描述

HttpServletRequest

request对象/httprequest对象——服务器自动创建,可以直接使用;

请求行

getMethod
获取提交方式

getContextPath
获取虚拟目录(即项目名,不包括后面的服务器名和页面名)
用于jsp中动态获取虚拟目录,以防项目名更改后所有表单都要改action指向的路径

getLocaladdr

getProtocal
获取请求的版本和协议(如http 1.1)

getquerystring获取提交的数据

getremoteaddr获取访问服务器的地址

getUri
获取从虚拟路径直到访问的页面
URI:统一资源标识符(资源在本地的地址标识)

getUrl
获取从服务器地址到所访问的页面的完整路径
URL:统一资源定位符(网络中的资源定位,所会带地址)

请求头

getheader(键字符串)
获取请求头中某个类型的数据
主要的键:
referer 用于防盗链
如如果refer里不包含本官网即指定合作网站的信息,视为防盗链,设置禁止访问

user_agent 用于根据不同版本浏览器调整设置

getHeadNames()
获取所欲请求头中的键和值组成的枚举Enumeration对象
(可以通过迭代器 hasNextElement() NextElement方法遍历得到所有请求头的键值)

请求体(存取表单提交的数据)

getparameter(name)?
返回被提交过来的参数中键=name的的参数的值
getparameternames()
返回被提交过来的参数中的所有键
getparametervalues(name)
返回被提交过来的参数中的所有 键=name的参数的值
getparametermap()
返回被提交过来的 键=name,值=String[]的map集合

请求转发

  • 使用方式
  1. 获取转发器
    getRequestDispatcher(“内部资源地址,如HTML或另一个servlet”)

  2. 执行转发
    转发器.forward(request,response);

  • 特点
  1. 转发器只能转发到项目内部资源(所以也不能写项目名,会自动在前面拼接项目名的)
    浏览器访问服务器属于从外部访问(浏览器是外部资源)需要写项目名;服务器内的servlet之间或servlet到页面都是内部资源互相访问
  2. 请求转发地址栏的地址并不变化
    从哪个页面开始转发,地址留在哪个页面,并不会跳转成转发到的页面/服务器地址;(无论请求转发多少次,请求都只执行一次,request对象也都是那一个)

request-域对象

四种域对象

  • pageContext(jsp中的)
  • ServletContext 一次服务器的运行(服务器开始到关闭)
  • HTTPSession 一次会话(浏览器开启到关闭)
  • HttpSerVletRequest 一次请求(地址栏回车一次请求(可以包含多次转发))

通用方法(域对象中存储的数据存取)

  • setAttribute(String,Object);

  • getAttribute(String);
    如果键=String不存在(null),返回null

  • removeAttribute(String);

HttpServletResponse

重定向(可以访问外部)

response.sendRedirect(“从项目名开始的完整虚拟目录的目标地址”)

  • 特点
  1. 重定向可以访问外部资源

  2. 重定向地址栏的地址会变化
    会变成重新定向到的页面/服务器地址;(每次都是原页面驳回并告知浏览器重定向至新资源,于是重新请求新资源;每次重定向,执行2次请求)

  • 区别
请求转发重定向
只能访问内部资源可以访问外部
访问资源不需要写虚拟目录需要写虚拟目录
可以用request域、session域、 servletcontext域传值只能用session servletcontext域传值
地址栏不变地址栏变化
不重新请求每次重新请求
服务器行为客户端行为
性能优性能相对差
java独有其他语言也都有

request存的值,只能用请求转发传递,用request取

请求转发和重定向之后,response对象已经被提交,不能再进行请求转发/重定向;

请求转发和重定向之后,非请求转发/重定向的其他语句可以执行;
请求转发后写其他语句:执行完请求转发,才执行其他语句
重定向后写其他语句:执行完其他语句,再执行重定向

状态码

设置状态码response.setStatus()

  • 4**
    404 资源未找到:请求的路径存在错误
    405 提交方式有误:提交方式没有对象的doXX方法

  • 2** 成功

  • 1** 客户端向服务器请求数据但没有完成

  • 3**
    304 访问缓存
    302 重定向

      response.sendredirect(“重定向的地址”)
      等价于
      response.setStatus(302);
      response.setHeader("Location","重定向的目标地址")
    
  • 5** 服务器异常

响应头 response.setHeader(“键”,“值”)

作用简便写法
location用于重定向重定向的目标地址response.sendredirect(“重定向的地址”)
contenttype用于告知浏览器内容的格式一般为"text/html;charset=utf-8"response.setContentType(“text/html;charset=utf-8”)
status用于重定向302response.sendredirect(“重定向的地址”)
等价于
response.setStatus(302);
response.setHeader(“Location”,“重定向的目标地址”)

响应行

响应体

session 和 servletContext

request

一般用于请求转发 ,存储页面跳转中的提示信息

servletContext

一般用于存储全局配置信息(不因用户而异的信息) 数据库路径、图标路径等

getrealpath

根据项目中的相对路径
获取文件的绝对路径
以便读写文件、配置信息

session

其他大部分场景(购物车、免登陆)使用
(因为可以设置超时时间,关了浏览器之后一定时间(可以很长)内都可以保存数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值