java web

1、基本概念

1.1 前言

web开发:

  • web,网页,如www.baidu.com
  • 静态web(html、css;页面显示数据不会变化)
  • 动态web(几乎所有网站;数据变化;技术栈:Servlet/jsp,asp,php)
    动态web资源开发的技术的统称。
1.2 web应用程序

a.html 、b.html
可供浏览器访问的程序;包括:

  • html、css、js
  • jsp、servlet
  • Java程序
  • jar包
  • 配置文件(Properties)
    web应用程序编写完毕后需要一个服务器来统一管理给外界提供服务。
1.3 静态web

.html 、.html
服务器中存在这些页面时,可以直接读取。
静态web的缺点:无法和数据库交互、页面无法动态更新。

1.4 动态web

2、web服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户响应信息。
IIS:微软,ASP。。。,Windows中自带
Tomcat:面向百度编程;轻量级服务器;实际上运行JSP页面和Servlet;

3、Tomcat

3.1 安装Tomcat

官网:https://tomcat.apache.org/download-90.cgi
选择版本下载,解压后尝试启动关闭Tomcat
解压文件路径/bin/shutdown.bat(脚本关闭)或者点击命令行关闭按钮
解压文件路径/bin/startup.bat(启动)(双击)
访问测试:浏览器输入:http://localhost:8080

3.2 Tomcat的配置和启动

conf/server.xml 为服务器核心配置文件

  • 可以配置启动端口号
  • 默认端口号:tomcat:8080;mysql:3306;http:80;https:443
  <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  • 可配置主机的名称
    默认的主机名为locahost-》127.0.0.1
    默认网站应用存放的位置为:webapps
   <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
网站如何访问的?

1、输入一个域名;回车进入
2、检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
有:直接返回对应的ip地址,这个地址中有需要访问的web程序,可以直接访问。
127.0.0.1 http://localhost:8080
没有:则去DNS服务器中找,能找到的话就返回,找不到则反馈为找不到网页。

3.3 发布一个网站

将自己写的网站放到服务器中指定的web应用的文件夹下(webapps)就能访问了。
网站结构

---webapps:Tomcat服务器的web目录
    --ROOT
    --mmstudy:自己网站的目录名
       -WEB-INF
          -web.xml
          -classes: Java程序
          -lib:web应用所依赖的jar包
       -index.html  默认的首页
       -static
          -css
             -style.css
          -js
          -img

4、HTTP

4.1 什么是HTTP

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请求
  • 客户端—发送请求(Request)—服务器
    百度:
 Request URL: https://www.baidu.com/      //请求地址
Request Method: GET    //get方法和post方法
Status Code: 200    //状态码
Remote(远程) Address: 106.117.216.33:443 
authority: dss0.bdstatic.com
:method: GET
:path: /5aV1bjqh_Q23odCf/static/superman/img/searchbox/nicon-2x-6258e1cf13.png
:scheme: https
accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9    //语言
referer: https://www.baidu.com/
sec-fetch-dest: image
sec-fetch-mode: no-cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1

1、请求行

  • 请求行中的请求方式:GET
  • 请求方式:Get 、POST、HEAD、DELETE、PUT。。。
    get:请求能够携带的参数比较少、大小有限制、会在浏览器的URL地址栏显示数据内容,不安全但高效。
    post:请求能够携带的参数没有限制、大小没有限制、不会在浏览器的URL地址栏显示数据内容,安全但不高效。
    2、消息头
Accept: 告诉浏览器,他所支持的数据类型
Accept—Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-language:告诉浏览器,他的语言环境
Cache-Control:缓存控制
Connection:告诉服务器,请求完成是断开还是保持连接
Host:主机
4.4Http响应
  • 服务器-响应-客户端
    百度
cache-control: max-age=2592000    //缓存控制
content-length: 5264    
content-type: image/png       //类型
date: Sun, 07 Mar 2021 15:15:11 GMT
etag: "5ea8e535-1490"
expires: Tue, 30 Mar 2021 01:40:45 GMT
last-modified: Wed, 29 Apr 2020 02:23:49 GMT
ohc-cache-hit: ts2ct56 [4], nb2ctcache56 [4]
ohc-response-time: 1 0 0 0 0 0
server: JSP3/2.0.14

1、响应体

Accept: 告诉浏览器,他所支持的数据类型
Accept—Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-language:告诉浏览器,他的语言环境
Cache-Control:缓存控制
Connection:告诉服务器,请求完成是断开还是保持连接
Host:主机
Refresh:告诉客户端多久刷新一次
Location:让网页重新定位

2、响应状态码
200:请求响应成功
3XX:请求重定向
重定向:你重新定位到我给你的新位置去
4XX:找不到资源 404
资源不存在
5XX:服务器代码错误 500 502(网关错误)

思考问题;
当你的浏览器中地址栏输入地址并回车的一瞬间页面能够展示回来,经历了什么?

5、Maven

5.1 Maven项目架构管理工具

目的:方便导入jar包
Maven核心思想:约定大于配置

  • 有约束的不要违反
    Maven会规定好如何编写java代码,必须按照这个规范来。
5.2 下载安装Maven

官网:http://maven.apache.org/
下载地址(Windows系统):Binary zip archive:apache-maven-版本号-bin.zip

5.3 环境配置变量

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

  • M2_HOME maven目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的path中配置MAVEN_HOME:%MAVEN_HOME%\bin

配置完后在命令行输入 mvn -version,显示版本号,测试是否安装成功,保证配置正确。

5.4 阿里云镜像
  • 镜像:mirror
    作用:加速下载
  • 国内建议用阿里云的镜像
<mirror>
    <id>nexus-aliyun</id>
    <mirrorof>*,!jeecg,!jeecg-snapshots</mirrorof>
    <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
5.5 本地仓库

在本地的仓库,远程仓库;
本地仓库:在maven目录下新建一个文件夹命名为:maven-repo
建立一个本地仓库
在conf文件夹下找到setting.xml打开找到localRepository,添加本地仓库

<localRespository>maven的maven-repo文件的路径</localRespository>
5.6 在IDEA中使用maven

1、启动IDEA
2、创建一个maven项目
创建一个maven项目
项目信息填写
配置
自动导入包
3、创建成功
创建成功
4、观察maven仓库中多了什么东西
仓库新增
5、IDEA中的MAVEN如何设置
IDEA中设置Maven
注意:经常在IDEA中会出现一个问题,就是项目自动创建完成之后,Maven home会使用IDEA默认的,如果发现这个问题,需要手动改为本地的(IDEA项目创建成功后,需要注意Maven的配置)

5.7 创建一个没有模板的Maven项目

创建一干净的 Maven项目
没有模板的Maven项目
以下配置只有在web应用下才会有
Web应用目录

5.8 标记文件夹功能

文件夹功能说明
另一种设置方法:
Flie----》Project Settings
在这里插入图片描述

5.9 在IDEA中配置Tomcat

1、在这里插入图片描述
2、
在这里插入图片描述
3、
在这里插入图片描述
4、
在这里插入图片描述
在这里插入图片描述解决警告问题:
访问一个网站,需要指定一个文件夹名字
5、在这里插入图片描述
点击ok完成配置

5.10 pom文件

pom.xml文件是Maven的核心配置文件
在这里插入图片描述

5.11 资源导出问题解决办法

pom.xml文件地址
Maven的核心是约定大约配置,可能会出现资源导出配置失败的问题,解决方法:
配置文件

5.12 项目结构

jar包结构

5.13 解决遇到的问题

1、Unable to import maven project: See logs for details
解决办法:降级maven版本
2、Tomcat闪退
3、IDEA中每次都要重复配资和Maven
解决办法:在IDEA中的默认配置中去配置

6、Servlet

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

把实现了Servlet接口的Java程序叫做,Servlet

6.2 HelloServlet

Servlet在Sun公司有两个默认的实现类:HttpServlet,GenericServlet
1、构建一个普通的Maven项目,删除src文件,以后在此项目中建立moudel;这个空档工程就是Maven的主工程
2、关于Maven父子工程的理解
父项目中有:

 <modules>
        <module>servlet-01</module>
    </modules>

子项目中有:

  <parent>
        <artifactId>javaweb-02-servlet</artifactId>
        <groupId>com.kuang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

父项目中耳朵Java子项目可以直接使用

son extends father

3、Maven环境优化

  1. 修改web.xml为最新的
  2. 将maven的结构搭建完整

4、编写一个Servlet程序

  1. 编写一个普通类;
  2. 实现Servlet接口,这里直接继承HttpServlet
package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

//由于get或post只是请求实现的不同的方式,可以相互调用,业务逻辑一样;
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet (HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
        //super.doGet(req,resp);
        ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("Hello,Mr.Wang!");
    }
    @Override
    protected void doPost (HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
        doGet(req,resp);
    }

}

5、编写Servlet的映射
为什么需要映射:Java程序,需要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径。
注册一个Servlet,配置一个访问路径。
6、配置Tomcat
配置项目发布的路径即可。
(/s配置的是index页用来访问这个webapp的index页,/s/hello在去请求那个Servlet)
7、启动测试

  • HTTP 404 状态码的出现意味着链接指向的网页不存在,即原始网页的URL失效。查看URL配置是否有问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值