首页 > 编程语言 >JavaWeb

JavaWeb

时间:2023-02-01 21:58:52浏览次数:46  
标签:web 浏览器 请求 String 服务器 Servlet JavaWeb

1.基本概念

1.1 前言

web开发:

  • web,网页的意思:www.baidu.com
  • 静态web     html,css    提供给所有人看的数据始终不会变化!
  • 动态web   几乎所有的网站   提供给所有人看的数据始终发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!    
  • 技术栈:Servlet/JSP, ASP, PHP

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

1.2 web应用程序

web应用程序:可以提供浏览器访问的程序;

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

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

1.3 静态web

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

 

  • 静态web存在的缺点
    • web页面无法动态更新,所有用户看到的都是同一个页面
      • 轮播图,点击特效:伪动态
      • JavaScript[实际开发中,它用的最多]
      • VBScript
    • 它无法和数据库交互(数据无法持久化,用户无法交互)

1.4 动态web

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

  • 动态web存在的缺点
    • 假如服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布(停机维护);
  • 动态web的优点
    • web页面可以动态更新,所有用户看到的都不是同一个页面
    • 它可以与数据库交互(数据持久化:注册)

2. web服务器

2.1 相关技术

ASP:

  • 微软:国内最早流行的就是ASP;
  • 在HTML中嵌入了VB脚本,  ASP + COM;
  • 在ASP开发中,基本一个页面都有几千行的业务代码,页面极其混乱
  • 维护成本高!
  • C#
  • IIS服务器  (微软生态)

PHP

  • PHP开发速度很快,功能很强大,跨平台,代码很简单 (国内70%都是中小型网站,  WP) 
  • 无法承载大访问量的情况(局限性);

JSP/Servlet:

  • sun公司主推的B/S架构
    • B/S:浏览器和服务器
    • C/S:客户端和服务器
  • 基于java语言(所有的大公司,或者一些开源的组件,都是用java写的)
  • 可以承载三高问题带来的影响;
  • 语法像ASP(方便转换,加强市场强度)

2.2、web服务器

服务器是一种被动操作,用来处理用户的一些请求和给用户一些响应信息

 

IIS

  • 微软相关 Windows自带

3.Tomcat

  • tomcat的默认端口号为:8080
  • mysql:3306
  • http:80
  • https:443

网站是如何访问的

  1. 输入一个域名:回车
  2. 检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
    1. 有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
    2. 没有:去DNS访问(全世界的域名都在这里管理),找到的话就返回

网站的基本机构

  • webapps:Tomcat服务器的web目录
    • ROOT
    • On1on:网站的目录名
      • WEB-INF
        • classes:java程序
        • lib:web应用所依赖的jar包
        • web.xml:网站的配置文件
      • index.html:默认的首页
      • static
        • css
          • style.css
        • js
        • img
      • ···········

4. HTTP

4.1 什么是HTTP

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

  • 文本:html,字符串
  • 超文本:图片,音乐,视频,定位,地图
  • 默认端口:80

HTTPS:安全的

  • 默认端口:443

4.2 两个时代

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

4.3 HTTP请求

  • 客户端---请求----服务器
  • 1.请求行
    • 请求中的请求方式:GET
    • 请求方式:GET,POST,HEAD,DELETE,PUT,TRACT
      • get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全但是高效
      • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器URL地址栏显示数据内容,安全但不高效
  • 2.消息头
    • Accept:告诉浏览器,它所支持的数据类型
    • Accept-Encoding:支持的编码格式  GBK  UTF-8  GB2312  ISO8859-1
    • Accept-Language:告诉浏览器,它的语言环境
    • Cache-Control:缓存控制
    • Connection:告诉浏览器,请求完成是断开还是保持连接
    • HOST:主机

 

4.4HTTP响应

  • 服务器---响应----客户端
  • 响应头
  • 1.响应体
    • Accept:告诉浏览器,它所支持的数据类型
    • Accept-Encoding:支持的编码格式  GBK  UTF-8  GB2312  ISO8859-1
    • Accept-Language:告诉浏览器,它的语言环境
    • Cache-Control:缓存控制
    • Connection:告诉浏览器,请求完成是断开还是保持连接
    • HOST:主机
    • Refrush:告诉客户端,多久刷新一次
    • Location:让网页重新定位
  • 2.响应状态码
    • 200:请求响应成功
    • 3XX:请求重定向
      • 重定向:你重新到我给你的新位置去
    • 4XX:找不到资源    404
      •   资源不存在
    • 5XX:服务器代码错误     500  502:网关错误

 

6.Servlet

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

 

6.1 Servlet简介

  • Servlet就是sun公司开发动态web的一门技术
  • Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤
    • 编写一个类,实现Servlet接口
    • 把开发好的Java类部署到web服务器中

6.2 HelloServlet

1.构建一个普通的Maven项目,删掉里面的src目录,以后我们学习就在这个项目里建立Moudel;这个空工程就是Maven主工程

2.关于Maven父子工程的理解:

  父项目中会有

  

  子项目中会有

  

3.Maven环境优化

  1,修改web.xml为最新的

  2,将Maven的结构构建完整

4.编写一个Servlet程序

  1,编写一个普通类

  2,继承HttpServlet类

5,编写Servlet的映射

  为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务在注册所写的Servlet,还需要给他一个浏览器能够访问的路径

6.配置Tomcat

6.3 Servlet原理

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

6.4 Mapping问题

  1.一个Servlet可以指定一个映射路径

  

  2.一个Servlet可以指定多个映射路径

  

  3.一个Servlet可以指定通用映射路径

  

  4.指定一些后缀或者前缀等等...

  

  6.优先级问题

    指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;

    

6.5 ServletContext

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

  • 共享数据

  

    我在这个Servlet中保存的数据,可以在另一个Servlet里拿到

  

  

  

  • 获取初始化参数

  

  • 请求转发

  

  

  •  读取资源文件

  Properties

    • 在java目录下新建properties
    • 在resources目录下新建properties

  发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classpath;

  思路:需要一个文件流;

  配置一个properties配置文件,然后对其进行读取

6.6 HttpServletResponse

web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse;

  • 如果要获取客户端请求过来的参数:找HttpServletRequest
  • 如果要给客户端响应一些信息:找HttpServletResponse

  1.简单分类

    • 负责向浏览器发送数据的方法
      • ServletOutputStream getOutputStream() throwS IOException
      • PrintWriter getWriter() throws IOException    
    • 负责向浏览器发送响应头的方法 
      • void setCharacterEncoding(String var1);
      • void setContentLength(int var1)
      • void setContentLengthLong(long var1)
      • void setContentLengthType(String var1)
      • void setDateHeader(String var1, long var2);
      • void setDateHeader(String var1, long var2);
      • void setHeader(String var1, String var2);
      • void addHeader(String var1, String var2);
      • void setIntHeader(String var1, int var2);
      • void addIntHeader(String var1, int var2);
      • void setStatus(int var1);  

  2.常见应用

    1. 向浏览器输出信息
    2. 下载文件
      1. 要获取下载文件的路径
      2. 下载的文件名是啥? (使用subString从"/"的下一位开始截取)
      3. 设置让浏览器能够支持下载我们需要的东西(URLEncoder.encode中文名编码)
      4. 获取下载文件的输入流
      5. 创建缓冲区
      6. 获取OutputStream对象
      7. 将FileOutputStream流写入到buffer缓冲区
      8. 使用OutPutStream将缓冲区中的数据输出到客户端
    3. 实现下载文件
      1. String realPath = this.getServletContext().getRealPath("/1.png");
      2. String fileName = realPath.substring(realPath.lastIndexOf("//") + 1);
      3. response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(fileName,"UTF-8"));
      4. FileInputStream in = new FileInputStream(realPath);
      5. int len = 0; byte[] buffer = new byte[1024];
      6. ServletOutputStream out = response.getOutputStream();
      7. while((len=in.read(buffer))>0){out.write(buffer,0,len)};
      8. in.close();     out.close();

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 重定向

 

标签:web,浏览器,请求,String,服务器,Servlet,JavaWeb
From: https://www.cnblogs.com/On1on/p/17077313.html

相关文章

  • 【Javaweb】什么是Listener监听器?
    1、Listener监听器它是Javaweb的三大组件之一。Javaweb的三大组件分别是:Servelt程序,Filter过滤器,Listener监听器。2、Listener它是JavaEE的规范,就是接口3、监听器的作用......
  • 【Javaweb】jsp | 简单学习
    什么是jsp,它有什么用?jsp的全称是javaserverpages。Java的服务器界面。jsp的主要作用是代替Servlet程序回传html页面的数据因为Servlet程序回传html页面数据是一件非常......
  • 【Javaweb】JavaEE项目的三层架构 | 快速搭建
    逻辑类图  分层的目的是为了解耦。解耦就是为了降低代码的耦合度。方便项目后期的维护和升级。不同的层有不同的包web层com.stguigu.web/servlet/con......
  • javawebServlet
    javawebhttp响应服务器--响应--客户端Accept:告诉浏览器它所支持的数据类型Accept-Encoding:支持那种编码格式GBKUTF-8GB2312ISO8859-1Content-Type:text......
  • JavaWeb-VUE&Element
    JavaWeb-VUE&Element1,VUE1.1概述Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。Mybatis是用来简化jdbc代码编写的;而VUE是前端的框架,是用来简化Ja......
  • JavaWeb-Filter&Listener
    JavaWeb-Filter&Listener1,Filter1.1Filter概述Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现......
  • 【Javaweb】Servlet* | 请求重定向【
    请求重定向的含义请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址,你去新地址访问,叫请求重定向(因为之前的地址可能已经废弃)。  请求重定......
  • 【Javaweb】Servlet十 | HttpServletResponse类和HttpServletRequest类
    HttpServletResponse类的作用HttpServletResponse类和HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用。HttpS......
  • 【Javaweb】Servlet九 | base标签的作用【详细介绍】
    base标签的作用导言:路径跳转<ahref="/a/b/c.html">这是a下的b下的c</a></br><ahref="/ForwardC">请求转发:这是a下的b下的c</a></br><ahref="../../index.jsp">跳......
  • 【Javaweb】Servlet八 | 请求转发的代码实现【详解】
    请求的转发什么是请求的转发?请求转发是指,服务器收到请求时,从一次资源转到另一个资源的操作叫做请求转发。 部分代码//获取请求的参数(办事的材料)查看......