JavaWeb

Posted shuita

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb相关的知识,希望对你有一定的参考价值。

1.概念

1.1、前言

web开发:

  • web,网页的意思

  • 静态web

    • html,css
    • 提供给所有人看的,数据始终不会发生变化
  • 动态web

    • 几乎所有网站都是动态的
    • 提供给所有人看的,数据始终会发生变化,每个人在不同时间,不同地点,看到的信息不同
    • 技术栈:Servlet/JSP,ASP,php

在java中,动态web资源开发的技术统称为javaweb;

1.2、web应用程序

可以提供浏览器访问的程序

  • a.html、b.html.....多个web资源,可以被外界访问,提供服务
  • 能访问到的任何页面和资源,都存在某一台计算机上
  • URL
  • 这些统一的web资源会放在一个统一的文件夹下,web应用程序-->Tomcat:服务器
  • 一个web应用由多个部分组成(静态web,动态web)
    • html,css,js
    • jsp,servlet
    • java程序
    • jar包
    • 配置文件(Properties)

web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理。

1.3、静态web

  • *.htm,*.html,这些都是网页的后缀,如果服务器上一直存在这些东西,就可以直接读取,通过网络。

技术图片

  • 静态web缺点
    • 无法动态更新,所有用户看到的是同一个页面
      • 轮播图,伪动态
      • javascript(实际开发用的最多)
      • VBScript
    • 无法与数据库交互(数据无法持久化,用户无法交互)

1.4、动态web

  • 页面动态展示:“Web页面展示的效果因人而异”

技术图片

  • 缺点:
    • 动态资源出现错误,需要重新编写后台程序,重新发布。(停机维护)
  • 优点:
    • 可以动态更新,所有用户看到的是不同页面
    • 可以与数据库交互(数据持久化:注册,商品信息,用户信息。。。)

2.web服务器

2.1、技术讲解

ASP

  • 微软:国内最早流行的;
  • 在HTML中嵌入了VB的脚本,ASP+COM;
  • 在标签内写java代码,一个页面几千行的业务代码,维护成本高;

PHP

  • 开发速度快,功能强大,跨平台,代码简单;
  • 无法承载大访问量(局限性);

JSP/Servlet

  • sun公司主推的B/S架构;
  • 基于java语言;
  • 可以承载三高问题带来的影响(高并发,高可用,高性能);
  • 语法像ASP

2.2、web服务器

 服务器是一种被动的操作,用来处理请求和响应。

IIS

 微软的;ASP....,Windows中自带的。

Tomcat

 Apache的;免费开源;中小型系统和并发访问用户不是很多的场合下被普遍使用;Tomcat实际上运行JSP页面和Servlet。

...

3.Tomcat

3.1安装

 官网https://tomcat.apache.org/

技术图片

3.2配置

 配置环境变量

 1.文件夹作用:

技术图片

 2.可能遇到的问题:

  1.java环境变量没有配置

  2.闪退问题:需要配置兼容性

  3.乱码问题: 配置文件中设置(尽量不要修改配置文件)

 3.配置:

技术图片

  • 可以配置启动的端口号:默认8080

  • 可以配置主机的名称:默认localhost

  • 默认的网站应用存放位置:webapps

 4.面试题:

  谈谈网站是如何进行访问的?

   1.输入一个域名,回车;

   2.检查本机的C:WindowsSystem32driversetchosts配置文件下有没有这个域名的映射

    1.有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序

127.0.0.1   www.liuyang.com

    2.没有:去DNS服务器找,找到后返回

技术图片

3.3、发布一个web网站

  • 将自己写的网站放到服务器(Tomcat)中指定的web应用文件夹下(webapps),就可以访问了

  • 网站结构

技术图片

4.HTTP

4.1、是什么

HTTP(超文本传输协议)是一个简单地请求响应协议,通常运行在TCP上

  • 文本:html、字符串,......
  • 超文本:图片、音频、视频、定位、地图、......
  • 80

Https:安全的

  • 443

4.2、两个时代

  • http1.0
    • HTTP/1.0:客户端与web服务器连接后,只能获得一个web资源,断开连接。
  • http2.0
    • HTTP/1.1:客户端与web服务器连接后,可以获得多个web资源。

4.3、Http请求

技术图片

技术图片

1、请求行
  • 请求方式:Get,Post
    • get:请求能够携带的参数比较小,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
    • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效
2、请求头

技术图片

4.4、Http响应

技术图片

1、响应体

技术图片

2、响应状态码

 200:请求响应成功

 3xx:请求重定向

 4xx:找不到资源

 5xx:服务器代码错误

   502:网关错误

3.当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

? 1.浏览器获得url对应的请求,向操作系统请求该url对应的iP地址

? 2.操作系统查询DNS (首先查询本地host文件,没有则查询网络)获得对应ip地址

? 3.浏览器发送tcp连接请求向 ip地址对应的服务器。

? 4.服务器收到tcp连接请求后,回复可以链接请求。

? 5.浏览器收到回传的数据,确认ok后,还会向服务端发送数据包表示三次握手结束。

? 6.三次握手成功后,浏览器和服务端开始tcp连接形式传输数据包。

? 7.服务器传给浏览所需要的资源数据。

? 8.浏览器获得数据,渲染网页然后呈现给用户。

5.Maven

5.1、概念

 项目架构管理工具:方便导入jar包,Maven的高级之处在于,他会帮你导入jar包所依赖的其他jar包;

 核心思想:约定大于配置,Maven会规定好你该如何编写java代码,必须按照这个规范来;

5.2、下载安装

 配置环境变量

 阿里云镜像下载,在settings.xml下配置

技术图片

5.3、本地仓库

 建立一个本地仓库:localRepository

5.4、在IDEA中使用Maven

 1.创建一个MavenWeb项目

技术图片

技术图片

技术图片

 2.IDEA中Maven设置

技术图片

  • 全局设置

技术图片

 3.创建一个干净的Maven项目

技术图片

技术图片

5.5、在IDEA中配置Tomcat

技术图片

技术图片

技术图片

  • 解决警告问题
    • 必须要配置
    • 为什么有这个问题:我们访问一个网站,需要指定一个文件夹名字

技术图片

5.6、pom文件

 是Maven的和核心配置文件

技术图片

5.7、Maven中jar包关联图

技术图片

技术图片

5.8、问题

 1.由于约定大于配置,可能会遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:

技术图片

 2.web.xml头信息过时

  替换为和tomcat一致

技术图片

6.Servlet

6.1、简介

  • 开发动态web的一门技术
  • 开发一个Servlet程序
    • 编写一个类,实现Servlet
    • 把开发好的java类部署到web服务器中

6.2、HelloServlet

Servlet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet

 1.构建一个普通的Maven项目,删掉里面的src目录,在里面建立Moudel,这个空的工程就是Maven主工程;
 2.父项目中的jar包子项目可以直接使用
 3.修改web.xml为最新,将maven项目搭建完整(java,resources)
 4.编写Servlet程序,继承HttpServlet,重写doGet和doPost方法
 5.编写Servlet的映射:
  为什么需要映射:我们写的是java程序,要通过浏览器访问,而浏览器需要连接web服务器,所以要在web服务中注册我们写的Servlet,还需要给他一个浏览器能访问的路径;在web.xml中做映射;

技术图片

 6.配置Tomcat
  注意配置项目发布的路径
 7.启动测试

6.3、Servlet原理

 Servlet是由web服务器调用,web服务器收到浏览器请求后

技术图片

6.4、Mapping问题

 1.一个Servlet指定一个映射路径
 2.一个Servlet指定多个映射路径
 3.一个Servlet指定通用映射路径(/hello/*)
 4.默认请求路径(/*)
 5.指定一些后缀或前缀(*.do),*前面不能加项目映射的路径
 6.优先级问题:
   指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求

6.5、ServletContext

web容器在启动的时候,会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用

技术图片

  • 共享数据:在这个Servlet中保存的数据,可以在另外一个Servlet中拿到
  • 获取初始化参数:1.web.xml中配置初始化参数;2.context.getInitParameter获取
  • 请求转发:context.getRequestDispatcher(“/...”).forward(req,resp);
  • 读取资源(配置)文件:
  • 发现:都被打包到同一个路径下,classes,俗称classpath
  • 思路:需要一个文件流

以上是关于JavaWeb的主要内容,如果未能解决你的问题,请参考以下文章

javaweb入门-----jsp概念

day06-jsp

JavaWeb - JSONProtobufThriftMessagePack 对比和开发指南

1.JSP入门

jsp页面被tomcat引擎运行的时候组装成java片段,但是这些java片段怎么没有main方法作为程序的入口啊?

JSP基础--JSP入门