栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JSP学习之路1】web基础知识、Maven Web项目创建、web.xml文件配置理解、tomcat配置Deployment中Application Context理解...

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JSP学习之路1】web基础知识、Maven Web项目创建、web.xml文件配置理解、tomcat配置Deployment中Application Context理解...

文章目录
  • 1、Javaweb
    • 1.1 web应用程序
    • 1.2 静态web
    • 1.3 动态web
  • 2、web服务器
    • 2.1 技术讲解
    • 2.2 web服务器
    • 发布一个web网站
  • 3、HTTP
    • 3.1 HTTP是什么
    • 3.2 两个时代
    • 3.3 http请求
    • 3.4 http响应
  • 4、Maven
    • 4.1 配置环境变量
    • 4.2阿里云镜像
    • 4.3本地仓库
    • 4.4 Idea中使用maven
      • 创建一个maven web项目
      • mavenWeb项目和普通maven项目结构区别
      • 完整构建maven web项目
    • 4.5 在IDEA中配置tomcat
    • 4.6 pom.xml文件
    • 4.7 Maven存在的问题-资源导出问题
    • 4.8 IDEA中生成jar包目录树
    • 4.9 解决遇到的问题
  • 5、tomcat和web.xml中配置理解
    • 配置Tomcat Deployment中的Application Context理解
    • 配置servlet理解
    • 前端页面显示中文问题

1、Javaweb
  1. 静态web

    html,css

  2. 动态web

    技术栈:Servlet/jsp,asp,php

1.1 web应用程序

可以提供浏览器访问的程序: a.html , b.html…

tomcat服务器

一个web应用由多部分组成(静态web,动态web)

  • html,css,js
  • jsp,servlet
  • java程序
  • jar包
  • 配置文件(properties)

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

1.2 静态web

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

静态web存在的缺点:

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

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

缺点:

  • 假如服务器的动态web资源出现了错误,我们需要重写编写我们的后台程序,重新发布。
    • 停机维护

优点:

  • web页面可以动态更新,所有用户看到都不是同一页面
  • 它可以与数据库交互(数据持久化)

2、web服务器 2.1 技术讲解

ASP:

  • 微软:国内最早流行的
  • 在html中嵌入VB脚本,ASP+COM
  • 在ASP开发中,基本一个页面都有几千航的业务代码,页面极其混乱

php:

  • 开发速度快,功能强大,跨平台,代码简单(70%,WP)
  • 无法承载大访问亮的情况(局限性)

Jsp/servlet:

  • 本质上是servlet

  • sun公司主推的B/S架构

    (B/S:浏览器和服务器 C/S:客户端和服务器)

  • 基于java语言的(所有的大公司,或者一些开源的组件,都是用java写的)

  • 可以承载三高问题带来的影响,高并发,高性能,高可用

  • 语法像ASP,ASP–>JSP,加强市场强度

2.2 web服务器

Tomcat

面向百度编程;

apache 软件基金会

工作3-5年,尝试手写Tomcat;

下载Tomcat:

  1. 安装 or 解压
  2. 了解配置文件及目录结构
  3. 这个东西的作用

Tomcat官网

tomcat server.xml 文件可以修改启动的端口号,可以修改主机名称,

默认端口号:

tomcat:8080

mysql:3306

http:80

https:443

默认主机名称:

localhost—>127.0.0.1

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

webapps

  • 高难度面试题:

    请你谈一下网站如何进行访问的?

    1. 输入域名,回车 www.baidu.com

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

      • 有,就直接返回对应ip的地址

        127.0.0.1 www.baidu.com

        这个地址中有我们需要访问的web程序,可以直接访问

      • 没有,去DNS服务器,(DNS全世界的域名都在这里管理 14.215.117.39:443)

IIS

微软的; ASP … Windows中自带

…

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

发布一个web网站

将自己写的网站 *.html文件,放到服务器tomcat中指定的web应用的文件夹webapps下,就可以访问了

网站应该有的结构

-- webapps: tomcat 服务器的web目录
   -- ROOT
   -- kuangstudy : 网站的目录名
		-- WEB-INF 
			-- Classes : java程序
			-- lib : web 应用所有需要的jar包
			-- web.xml : 网站配置文件
		--index.html 默认的首页
		-- static
			--css
				--style.css
			--js
			--img
		-- ....
3、HTTP 3.1 HTTP是什么

HTTP 超文本传输协议,简单的请求、响应协议

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

HTTPS:

  • 443
  • 安全的
3.2 两个时代
  • http1.0

    http/1.0:客户端可以和web服务器连接后,只能获得一个web资源,断开连接。

  • http2.0

    http/1.1:客户端可以与web服务器连接后,可以获得多个web资源。

3.3 http请求
  • 客户端—发请求(request)—服务器

  • 以百度为例:

    General 通用的:请求和响应都有

    Request URL: https://www.baidu.com/   请求地址
    Request Method: GET   get/post方法
    Status Code: 200 OK    状态码:200
    Remote Address: 180.101.49.11:443   远程地址
    Referrer Policy: strict-origin-when-cross-origin 引荐来源网址策略 “strict-origin-when-cross-origin”,用于修剪用户敏感信息,例如路径和查询字符串,以保护隐私。
        referrer 头经常包含用户的隐私数据,比如用户在引用网站上阅读哪些文章、甚至是用户在网站上的账户信息。因此,W3C 官方提出了一些候选策略 Referrer Policy,以规范 referrer 内容。
        即当从 HTTPS 网站跳转到 HTTP 网站或者请求其资源时(安全降级 HTTPS→HTTP),不显示 referrer 的信息,其他情况(安全同级 HTTPS→HTTPS,或者 HTTP→HTTP)则在 referrer 中显示完整的源网站的 URL 信息。
    

    Request header:

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,...  请求类型信息
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9 语言
    Connection: keep-alive  连接:一直连接
        
        中间一堆cookie信息
    Cookie: BIDUPSID=27CCFA0EF0EC7BE270189BCE89C465F1; PSTM=1597130134; BAIDUID=5B74033ED4696DC25CC97B295A443D76:FG=1; BD_UPN=12314753; MCITY=-352%3A; BAIDUID_BFESS=5B74033ED4696DC25CC97B295A443D76:FG=1; ZFY=N9RnKbDDv1VWhF3plEYx2jnBibjkBClK4C5W7h3a5A0:C; COOKIE_SESSION=4581192_2_9_9_8_9_1_0_8_5_1_0_4581192_0_37_0_1657009934_1652341087_1657009897%7C9%232235112_315_1652341085%7C9; baikeVisitId=fa2ebb37-2746-49fd-a81f-da7ca55cf1f9; BA_HECTOR=04a58la00g25818g201hccfrq14; BDRCVFR[-HoWM-pHJEc]=mk3SLVN4HKm; BD_HOME=1; H_PS_PSSID=31254_26350
        
        
    Host: www.baidu.com   主机  
    sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
    sec-ch-ua-mobile: ?0   移动
    sec-ch-ua-platform: "Windows"  平台 windows 
    Sec-Fetch-Dest: document 文档
    Sec-Fetch-Mode: navigate   导航
    Sec-Fetch-Site: none    网站
    Sec-Fetch-User: ?1   用户
    Upgrade-Insecure-Requests: 1  升级-不安全-请求
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36  用户代理
    
    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: keep-alive  告诉浏览器请求完成是断开还是连接
      Host...主机
      
3.4 http响应
  1. 服务器—响应(respose)—客户端

  2. 以百度为例,respose header

    Cache-Control: private  缓存控制
    Connection: keep-alive  保持连接
    Content-Encoding: gzip   内容编码 压缩程序
    Content-Type: text/html;charset=utf-8  内容类型:文本/超文本标记语言 text/html, 字符集=utf-8 utf:Unicode Transformation Format Unicode转换格式
    Date: Thu, 07 Jul 2022 02:13:05 GMT    当前时间 GMT:格林尼治时间
    Expires: Thu, 07 Jul 2022 02:12:14 GMT  有效期
    Server: BWS/1.1   浏览器服务信息
    Strict-Transport-Security: max-age=172800  严格传输安全 
    Traceid: 1657159985069125325811992526401082961452  跟踪id
    Transfer-Encoding: chunked  转移编码:分块
    X-Frame-Options: sameorigin  框架选项:同源
    X-Ua-Compatible: IE=Edge,chrome=1 兼容
    
    1. 响应体

      Accept: 告诉浏览器,它所支持的数据类型
      Accept-Encoding:  支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
      Accept-Language:  告诉浏览器,他的语言环境
      cache-Control: 缓存控制
      Connection: keep-alive  告诉浏览器请求完成是断开还是连接
      Host...主机
      Refrush:告诉客户端,多久刷新一次;
      Location: 让网页重新定位; 
      
    2. 响应状态码

      200 请求响应成功

      3** 请求重定向 303

      • 重定向:你重新到我给你的位置去

      4** 找不到资源 404

      • 资源不存在 后端服务器没有找到

      5** 服务器代码错误 500 502 网关错误1

    常见面试题

    当你的浏览器中地址栏输入地址并回车到页面能够展示回来,经历了什么?

4、Maven

帮助管理jar包,java开发中大量jar包,需要手动导入很麻烦

maven帮助自动导入和配置jar包

maven是一个项目架构管理工具

目前用它来导入jar包

核心思想:约定大于配置

  • 有约束,不要违反

maven会规定如何编写java代码,必须按规范来

下载安装maven

  • apache maven progect 官网下载 bin.zip & src.zip

    https://maven.apache.org/

解压 bin.zip

conf – 配置

4.1 配置环境变量

在系统环境变量中,配置如下配置:

  • M2_HOME maven安装目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的path中配置%MAEN_HOME%bin
4.2阿里云镜像
  • 镜像 mirrors

    • 作用:加速下载
  • 国内建议使用阿里云的镜像

    
    	alimaven
        central
        aliyun maven
      http://maven.aliyun.com/nexus/comtent/groups/public
    
    

    或者

    
    	nexus-aliyun
        *,!jeecg,!jeecg-snapshots
        Nexus aliyun
      http://maven.aliyun.com/nexus/comtent/groups/public
    
    
4.3本地仓库

在本地的仓库,远程仓库;

建立一个本地仓库: 不需要每次去网上下载 localRepository

setting.xml中


    这里放的是本地自己新建的maven仓库地址

4.4 Idea中使用maven
  1. 启动idea
创建一个maven web项目

选中maven web项目模板,进行创建

​

点击finish

​

​ 构建maven项目成功

​ 观察maven仓库中多了什么东西?

​ IDEA中的maven设置:

​ idea项目创建成功后,看一下maven配置

maven在idea中的配置和使用就ok了

创建一个普通的maven项目

不选中创建模板,直接next

mavenWeb项目和普通maven项目结构区别

maven web项目结构:

WEB-INF----web.xml index.jsp 这个只有在web应用下才会有!

普通maven项目结构:

完整构建maven web项目

在 maven web项目下加入一个 java文件 和 resources文件;

java文件中放代码 ,标记为源码目录 Sources Root

resources文件中放资源,标记为资源目录 Resource Root

标记文件夹功能:

项目结构配置:

​

4.5 在IDEA中配置tomcat

创建了一个 maven web项目后,配置Tomcat;

解决了警告问题。

为什么会有警告问题?

我们访问一个网站,需要指定一个文件夹的名字;idea没有主动去找项目名字,需要手动配置。

4.6 pom.xml文件

pom.xml是maven的核心配置文件

maven命令使用:

clean:

Maven导入jar包:

4.7 Maven存在的问题-资源导出问题

Maven由于他的约定大于配置,所以默认的maven项目在构建编译时不会把我们其他目录下的配置文件导出到target目录中,从而导致配置文件无法导出或者生效的问题。

解决方案:在项目的pom.xml文件中手动配置资源过滤,让它把src/main/java目录下的.properties和.xml文件也能够被导出。


    
        
            src/main/resources
            
                ***.xml
            
            true
        
        
            src/main/java
            
                ***.xml
            
            true
        
    

4.8 IDEA中生成jar包目录树

4.9 解决遇到的问题
  1. Maven 3.6.2 版本有问题,建立依赖的时候依赖无法导入,导入的时候会报错

    解决方法:降级为3.6.1

  2. Tomcat闪退

    因为tomcat需要java的环境,但是tomcat中没有配置java环境,所以就会闪退。

    解决办法:tomcat安装文件bincatlina.bat用记事本打开,找到Java环境配置的地方,配置下java的环境。

  3. IDEA中每次都要重复配置Maven

    解决办法:在IDEA中的全局默认配置中去配置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y5QuEWO8-1657265446108)(C:Users16431AppDataRoamingTyporatypora-user-imagesimage-20220707174107079.png)]

  4. Maven项目中Tomcat无法配置

  5. Maven默认web项目中的web.xml版本问题

    默认生成web-app_2_3,这个版本太老了,

    替换为webapp4.0版本,和tomcat保持一致

    所以需要更换使用 D:Program Filesapache-tomcat-9.0.43webappsROOTWEB-INFweb.xml 中的xml模板:

    
    
    
    
      Welcome to Tomcat
      
         Welcome to Tomcat
      
    
    
    
    
5、tomcat和web.xml中配置理解

创建maven web项目结构:

创建servlet类:

这个类模板在tomcatwebappsexamplesservlet中;

操作:启动tomcat,访问localhost:8080/examples/servlets即可得到Servlets examples

项目启动后,浏览器输入url,进行访问,得到页面,后端是怎么进行的?

配置Tomcat Deployment中的Application Context理解

/hello,就是给tomcat下加了一层包,包名字叫hello,访问的时候地址变为:localhost:8080/hello

  • 如果没有加,访问 localhost:8080 默认进入后端index.jsp页面

  • 如果给tomcat这里加了新的包层,则访问路径为localhost:8080/hello/,访问页面默认进入后端index.jsp页面

配置servlet理解
  • 访问 localhost:8080/hello/kuangsheng 访问时先从WEB-INF中的web.xml文件找 servlet-mapping 中 url-pattern 请求路径为 /kuang 的 servlet-name , 由于一个servlet 对应一个 servlet-mapping ,所以再通过找到的servlet-name 去找servlet中的 servlet-class ,servlet-class中是这个类的 路径 ,从而找到类响应的页面;

前端页面显示中文问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号