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

零点五基础开始学习JavaWeb

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

零点五基础开始学习JavaWeb

前言

  学习完Java基础之后开始学习JavaWeb,自己做一些笔记顺便就发在博客上,由于本人不是专业写这个的,可能会很烂,希望阅读到此文章的读者包含。如果有错误希望评论指正。文章会很长,其中包含我进行练习时候的源码,所以准备了目录方便继续阅读。
  本人也在学习当中,会根据我的学习进度一直更新。通过B站UP主:遇见狂神说 学习
设备: Macbook Pro(M1)
软件: IntelliJ IDEA 2021.2.3(已激活)

目录
  • 1、概念
    • 1.1 静态web
    • 1.2 动态web
  • 2、web服务器
    • 2.1 技术
    • 2.2 web服务器
  • 3、Tomcat
    • 3.1 文件类型
    • 3.2 启动
    • 3.3 配置
    • 3.4 发布一个web网站
    • 3.5 关闭
  • 4、HTTP
    • 4.1 概念
    • 4.2 Http请求
      • 4.2.1 请求行
      • 4.2.2 消息头
    • 4.3 Http响应
      • 4.3.1 响应体
      • 4.3.2 响应状态码
  • 5、Maven
    • 5.1 Maven项目架构管理工具
    • 5.2 配置环境变量
    • 5.3 pom文件
  • 6、Servlet
    • 6.1 什么是Servlet
    • 6.2 测试Servlet
      • 6.2.1 创建一个普通Maven项目
      • 6.2.2 Maven父子工程
      • 6.2.3 Maven环境优化
      • 6.2.4 编写一个Servlet
      • 6.2.5 编写Servlet的映射
      • 6.2.6 配置Tomcat
      • 6.2.7 启动测试
    • 6.3 Servlet原理
    • 6.4 Mapping
    • 6.5 ServletContext

1、概念 1.1 静态web
  • 缺点

    • Web无法动态更新
    • 无法与数据库交互
1.2 动态web
  • 缺点

    • 加入服务器动态web出现错误需要重新编写后台程序重新发布,需要停机维护
  • 优点

    • 可以动态更新
    • 可以与数据库交互(数据持久化:注册)
2、web服务器 2.1 技术

ASP

  • 微软
  • HTML嵌入VB脚本,ASP+COM
  • 在ASP开发中,及本页面有几千行代码,页面混乱,维护成本高
  • 使用C#语言

PHP

  • 开发速度快,功能强大,跨平台,代码简单
  • 缺点:无法承载大访问量

JSP/Servlet

  • sun公司主推的B/S1架构
  • 基于Java(大公司或者开源组件使用Java)
  • 可以承载三高问题带来的影响
  • 语法像ASP
2.2 web服务器

​ Tomcat

​ 免费软件,支持Servlet和JSP规范。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下使用,开发和调试JSP程序首选。

​ 最新版本为10.0.

3、Tomcat 3.1 文件类型

3.2 启动

启动终端进入文件夹 cd /Users/jingjiu/apache/apache-tomcat-9.0.54/bin

获取权限chmod +x *.sh

打开文件 ./startup.sh

访问测试:http://localhost:8080/

3.3 配置

可以配置启动端口号

核心配置文件:server.xml

  • Tomcat默认端口号:8080
  • mysql:3306
  • http:80
  • https:443

可以配置主机名称

3.4 发布一个web网站

将网站放到服务器(Tomcat)指定的应用文件夹(webapps)

3.5 关闭

关闭 ./shutdown.sh

4、HTTP 4.1 概念
  • HTTP(超文本传输协议),通常运行于TCP之上
  • 1.0:获得一个web资源,断开连接
  • 1.1:获得多个web资源
4.2 Http请求
  • 客户端—发请求(Request)—服务器

百度:

Request URL: https://www.baidu.com/           //请求地址
Request Method: GET																	 //get方法/post方法
Status Code: 200 OK																	 //状态码
Remote Address: 220.181.38.150:443									 //远程地址
Referrer Policy: strict-origin-when-cross-origin//协议
4.2.1 请求行
  • 请求行的请求方式:GET
  • 请求方式:GET,POST,HEAD,DELETE,PUT…
    • GET:请求携带的参数较少,大小有限制,会在浏览器的URL的地址栏显示数据内容,不安全,高效
    • post:请求携带的参数没有限制,大小没有限制,不会在浏览器的URL的地址栏显示数据内容,安全,不高效
4.2.2 消息头
Accept: //告诉浏览器支持的数据类型
Accept-Encoding: //支持哪种编码格式 GBK  UTF-8 GB2312 	ISO8859-1
Accept-Language://语言环境
Cache-Control: //缓存控制
Connection: //请求完成是断开还是保持连接
HOST: //主机 
4.3 Http响应
  • 服务器—响应(Response)—客户端
Cache-Control: private									//缓存控制
Connection: keep-alive									//连接:保持状态
Content-Encoding: gzip									//编码
Content-Type: text/html;charset=utf-8		//类型
4.3.1 响应体
Accept: //告诉浏览器支持的数据类型
Accept-Encoding: //支持哪种编码格式 GBK  UTF-8 GB2312 	ISO8859-1
Accept-Language://语言环境
Cache-Control: //缓存控制
Connection: //请求完成是断开还是保持连接
HOST: //主机 
Refresh: //告诉客户端,多久刷新一次
Location: //让网页重新定位
4.3.2 响应状态码
  • 200:请求响应成功
  • 3xx:请求重定向2
  • 4xx:找不到资源 404
  • 5xx:服务器代码错误 500 5023
5、Maven 5.1 Maven项目架构管理工具

用于方便导入配置jar包

核心思想:约定大于配置

规定如何编写Java代码

5.2 配置环境变量

Mac(M1)配置Maven

5.3 pom文件
  • Maven核心配置文件
6、Servlet 6.1 什么是Servlet
  • 开发动态web的一门技术

  • 是Sun在API中提供的接口。开发一个Servlet程序需要完成2步

    • 写一个类实现Servlet接口
    • 把开发好的Java类部署到web服务器中
6.2 测试Servlet 6.2.1 创建一个普通Maven项目

删除src目录,在这个项目里建立新的Moudel。空的工程就是Maven主工程,把依赖全部导入


            javax.servlet
            javax.servlet-api
            4.0.1
        
  
    javax.servlet.jsp
    javax.servlet.jsp-api
    2.3.3

6.2.2 Maven父子工程

父项目中会增加


		servlet-01

子项目中会增加


        javaweb-02-servlet
        com.jing
        1.0-SNAPSHOT
   

父项目中的java子项目可以直接使用

son extends father

6.2.3 Maven环境优化
  1. 修改web.xml为最新




  1. 将Maven结构搭建完整
6.2.4 编写一个Servlet
  1. 编写一个普通类
  2. 实现Servlet接口,直接继承HttpServlet
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter pw = resp.getWriter();
        pw.println("Hello Servlet");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}
6.2.5 编写Servlet的映射

​ 因为写的java程序,但是需要通过浏览器访问,而浏览器需要连接web服务器,所以需要在web服务中注册写的Servlet,给一个浏览器能够访问的路径


  Archetype Created Web Application
 					 
  
    hello
    com.jing.servlet.HelloServlet
  
  				
  
    hello
    /hello
  


6.2.6 配置Tomcat


6.2.7 启动测试 6.3 Servlet原理

浏览器—发送http请求—>web容器-----首次访问---->Servlet

Request<-----web容器----->Response---->Servlet

Servlet---->service方法

Request会从service(请求)拿到请求,把请求之后的响应交给Response

  • 实现类重写Servlet的方法
    • 接收并处理请求
    • 给出响应的信息
6.4 Mapping
  1. 一个请求可以指定一个映射也可以指定多个映射路径
  2. url可以使用通配符(*)请求通用路径
  3. 默认路径

  hello
  /*
  
  1. 可以自定义后缀实现映射(*前面不能加项目映射路径)
  
    hello
    *.jing
  
  • 可以写一个ErrorServlet404报错页面
public class ErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("UTF-8");//使用html,utf-8打开,可以识别汉字
        PrintWriter pw = resp.getWriter();
        pw.print("网址输错了笨蛋");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
6.5 ServletContext

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

  • 共享数据
    • 在一个Servlet里保存数据,在另一个Servlet中获取
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //this.getInitParameter();//初始化参数
        //this.getServletConfig();//Servlet配置
        //this.getServletContext();//Servlet上下文
        ServletContext sc = this.getServletContext();
        String username = "jingjiu";//数据
        sc.setAttribute("username",username);//将一个数据保存在 ServletContext中,名字username,值username
 		PrintWriter pw = resp.getWriter();
        pw.print("Name has read!");
    }
}
public class GetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext sc = this.getServletContext();
        String username = (String) sc.getAttribute("username");
        resp.getWriter().println("my name is" + username);
    }
}


  
    hello
    com.jing.servlet.HelloServlet
  
  
    hello
    /hello
  

  
    getc
    com.jing.servlet.GetServlet
  
  
    getc
    /getc
  


  1. C/S:客户端和服务器,B/S:浏览器和服务器 ↩︎

  2. 重新转到新位置 ↩︎

  3. 网关错误 ↩︎

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

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

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