Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

简介: Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

概述


web 服务器、项目、资源概述


web 服务器:可以被浏览器访问到的服务器

常见的 web 服务器:


tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache 公司的产品


WebLogic:Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 J2EE 规范。WebLogic 是用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器。收费的大型的服务器软件


WebSphere:IBM 公司的产品,支持 JavaEE 规范。WebSphere 是随需应变的电子商务时代的最主要的软件平台,可用于企业开发、部署和整合新一代的电子商务应用。收费的大型的服务器软件



web 项目: 部署在 web 服务器上面,可以被浏览器直接访问到的项目,特点:项目的结构得按照指定规则


web 资源:


   静态资源:指在页面写死的、始终不变的数据,比如:HTML、CSS、JS、图片、音频、视频。


   动态资源:指web页面中浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。 比如:在不同时间搜索微博的热门话题内容是不一样的。这些数据由程序生成,/Servlet、ASP、PHP等技术都可以完成。




软件的架构


网络中有很多的计算机,它们直接的信息交流,称之为:交互。


在互联网交互的过程的有两个非常典型的交互方式 —— B/S 交互模型和 C/S 交互模型。


C/S架构 Client/Server 客户端/服务器

特点:需要安装一个客户端,例如:QQ客户端 游戏各种客户端 迅雷客户端

优点:效果比较炫,好看

缺点:占用硬盘空间,服务器只要升级就要求客户端跟着升级


B/S架构 Browser/Server 浏览器/服务器

特点:不需要安装客户端,一个浏览器足矣,例如:网页淘宝 网页京东 网页12306

优点:不会占用硬盘空间,服务器只要升级不要求跟着升级

缺点:效果不炫,所有压力都在服务器



相同点: 都需要和服务器进行数据交互,都是先有请求,后给响应,一定是请求和响应成双成对

Tomcat 服务器

Tomcat 的目录结构

bin   里面存放的都是tomcat的二进制命令  关注点:开启服务: startup.bat   关闭服务:shutdown.bat
conf  里面存放的都是tomcat的配置文件   关注点:server.xml(配置端口) web.xml
lib   里面存放的都是tomcat运行过程中提供支撑的jar包
logs  里面存放的都是日志文件  关注点:错误信息的日志文件查看 catalina.2020-xx-xx.log
temp  里面存放的是tomcat运行过程中创建的临时文件 由tomcat维护
work  里面存放的内容和jsp相关
webapps(核心) 用来存放web项目 存放在这个里面的项目可以被浏览器直接访问到 http://localhost:8080 --> webapps文件夹下



虚拟路径发布项目


方式1:配置独立xml文件


1.在 tomcat/conf 目录下新建一个 Catalina 目录(如果已经存在无需创建)


2.在 Catalina 目录下创建 localhost 目录(如果已经存在无需创建)


3.在 localhost 中创建 xml 配置文件,名称为:xxx.xml(xxx名就是项目的浏览器访问别名)


xxx.xml中代码如下:

<Context docBase="项目所在的硬盘位置" />


好处:使用配置文件对项目的部署和卸载不用重启 tomcat 了,也不影响 tomcat 整体的配置文件

方式2:配置 server.xml,添加 context 标签


在 server.xml 配置文件的最后加上如下代码:

<Context path="项目的浏览器访问别名" docBase="项目所在的硬盘位置" />
• 1

注意:谨慎使用(最好单独独立出来一个配置文件)



电脑安装 Tomcat(了解)

在电脑安装一个 tomcat 软件,将电脑变成 web 服务器,步骤:


1.下载一个 tomcat 服务器软件,官网地址 http://tomcat.apache.org


2解压下载好的 tomcat。注意:将解压后的文件 copy 到一个没有中文和空格的路径下


3.启动 tomcat 服务:进入 bin 路径,双击 startup.bat 服务器就可以启动(默认占用电脑的8080端口)


4.测试:在页面输入地址访问 http://localhost:8080


5.关闭 tomcat 服务:直接关闭 或者去 bin 路径双击 shutdown.bat




Tomcat启动的常见问题总结


1、一闪而过
原因:没有配置环境变量JAVA_HOME 或者配置错误
解决:配置环境变量JAVA_HOME,因为tomcat在启动的时候会去找环境变量JAVA_HOME
Tomcat的底层需要JDK的支撑
  JAVA_HOME=jdk的安装路径(不要加bin目录)
  path=%JAVA_HOME%\bin
2、报错 java.net.BindException:  Address already in use: bind
原因:端口号被占用
解决:
  方式1:结束正在占用端口的进程
    1) netstat -ano 查看端口对应的pid
    2) 打开任务管理器 结束pid对应的进程
    方式2:改变自己的端口号
      修改conf文件夹中的server.xml  大概在69行的位置
      或者修改端口号为80: 80是默认端口号.可以不写


idea 集成 Tomcat 环境(了解)

idea 自动用的是虚拟路径的方式给 tomcat 管理的


idea集成tomcat步骤:

4903311f97f247e0a9424cba25a54703.jpeg


5ea040f12dde4db7929af24d8fae6298.jpeg



idea创建web项目:



idea发布项目:




Http协议


概念及作用

概念

协议:规定了被约束对象都需要去遵守的规则



http协议:

  • 是互联网上运用最为广泛的一种浏览器和服务器之间的协议,规定了浏览器和服务器之间要遵守的规则
  • 只要浏览器访问服务器或者是服务器响应浏览器必须要遵循一些规则,这些规则都是由http协议制定好的
  • http协议就是咱们浏览器和服务器之间的合同,双方都要遵循这份合同的规定内容




作用:

  • 规定了浏览器去请求服务器时候必须带哪些数据,以及这些数据都要以什么格式进行传递
  • 规定了服务器去响应浏览器的时候必须响应哪些数据回去,以及这些数据都要以什么格式进行传递




请求内容:请求行 请求头 请求体

请求内容分为:

  • 请求行(第一行)
POST        /web02_1/demo1.html       HTTP/1.1
提交方式     要请求的服务器资源         使用的是http协议的那个版本(固定)



请求头(key:value)

数据的格式:键值对的数据

常用头数据:Referer User-Agent


   Referer:当前页面的来源地址,可以解决防盗链

   User-Agent:用户的浏览器版本信息,可以解决下载


请求体(要传递给服务器的页面数据)

只有 post 提交才有 是页面表单的数据要传递给服务器的内容



响应内容:响应行 响应头 响应体

响应内容分为:

  • 响应行
// 组成部分:
HTTP/1.1    200
固定协议版本     状态码
// 常见的响应状态码:
200   OK 请求已成功,响应也没问题。出现此状态码是表示正常状态。
302   资源重定向
304   去找缓存数据
403   服务器拒绝执行 (文件或文件夹加了权限)
404   请求的资源没找到
405   请求的方法不存在
500   服务器错误 (代码写的有问题)



响应头

常用响应头:


location:重定向操作,通常告知浏览器马上向该地址发送请求

refresh:定时刷新操作,指定时间后跳转到指定页面

content-disposition:通知浏览器以何种方式获取数据(直接展示数据或者以附件方式)–下载

content-type:通知浏览器返回的资源类型以及编码格式 --处理响应数据的中文乱码



  • 响应体
    浏览器页面要解析显示的内容即是响应体的内容



get 提交和 post 提交的区别


get 提交的数据不安全,因为所有的页面表单数据都在请求行中,意味着资源都在地址栏暴露了


post 提交的数据安全,因为所有的页面表单数据都在请求体中,意味着资源都不会在地址栏暴露了


get 提交有着大小的限制,post 提交没有大小的限制


get 提交没有请求体,所有的表单的数据都在请求行中


post 有请求体,所有的表单数据都在请求体中




Java web 项目


项目的结构

在 JavaEE 规范中,WEB 项目存在一定的目录结构,具体结构如

   web项目(myweb)
  || ------ 静态资源(如html、css、js、img等)、二级目录等
  ||
  || 
  || ------ WEB-INF目录(放在该目录下的资源浏览器是不能直接访问到)
    || ------ classess目录:放的都是java代码的 .class
    || ------ lib目录:放入项目需要的jar
    || ------ web.xml:配置文件(配置的是项目的内容) 是tomcat首先会去加载的配置文件
            servlet如果是2.5的版本这个web.xml文件必须有
            servlet如果是3.0的版本这个web.xml文件可以不要  用注解代替



三大技术:Servlet、Filter、Listener


java web 项目服务器有三大技术:Servlet、Filter、Listener


servlet:本质就是一个类,这个类实现了 java 提供的 Servlet 规范。


可以对浏览器的请求和响应进行处理


filter:本质上是一个类,这个类需要实现 java 提供的 Filter 规范。


可以对浏览器访问服务器资源时的一种拦截,可以让符合条件放行,不符合条件不放行

listener:本质上是一个类,实现了 java 的 Listener 规范,可以监听其它对象(域)的状态变化




Servlet


概述


Servlet 运行在服务端的 Java 小程序,是 sun 公司提供一套规范,用来处理客户端请求、响应给浏览器的动态资源。


servlet 的实质就是 java 代码,通过 java 的 API 动态的向客户端输出内容。


servlet 的作用:

   在服务器端接受浏览器带来的请求数据(请求行、请求头、请求体)

   给浏览器做响应数据(响应行、响应头、响应体)



servlet 与普通的 java 程序的区别:


  • 必须实现 servlet 接口
  • 必须在 servlet 容器(服务器)中运行
  • servlet 程序可以接收用户请求参数以及向浏览器输出数据
相关文章
|
7天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
12天前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
36 4
|
1月前
|
Java 网络架构 Kotlin
kotlin+springboot入门级别教程,教你如何用kotlin和springboot搭建http
本文是一个入门级教程,介绍了如何使用Kotlin和Spring Boot搭建HTTP服务,并强调了Kotlin的空安全性特性。
58 7
kotlin+springboot入门级别教程,教你如何用kotlin和springboot搭建http
|
1月前
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
149 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
1月前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
68 1
|
1月前
|
安全 应用服务中间件 网络安全
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
|
2月前
|
存储 搜索推荐 UED
探索研究Servlet Cookie 处理
【9月更文挑战第25天】
36 0
|
3月前
|
存储 安全 搜索推荐
【JavaWeb 秘籍】Cookie vs Session:揭秘 Web 会话管理的奥秘与实战指南!
【8月更文挑战第24天】本文以问答形式深入探讨了Web开发中关键的会话管理技术——Cookie与Session。首先解释了两者的基本概念及工作原理,随后对比分析了它们在存储位置、安全性及容量上的差异。接着,通过示例代码详细介绍了如何在JavaWeb环境中实现Cookie与Session的操作,包括创建与读取过程。最后,针对不同应用场景提供了选择使用Cookie或Session的指导建议,并提出了保障二者安全性的措施。阅读本文可帮助开发者更好地理解并应用这两种技术。
58 1
|
3月前
|
存储 安全 搜索推荐
深入探讨Session和Cookie的概念、用途以及如何在Java Web开发中有效地使用它们进行用户状态管理。
在Java Web开发中,Session和Cookie是管理用户状态的核心技术。Session存储于服务器端,通过唯一的Session ID识别用户,确保数据安全与隐私;Cookie则存储于客户端,用于记录用户偏好等信息。两者各有优势:Session适合存储敏感数据,但需合理管理避免资源浪费;Cookie便于持久化存储,但在安全性上需谨慎设置。开发者可通过Servlet API轻松操作二者,实现个性化用户体验与应用性能优化。
59 2
|
3月前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
68 4