javaweb狂神说笔记

Javaweb

1、基础概念

1.1web开发:

  • web
  • 静态web
    • html、css
  • 动态web
    • 技术栈:servlet/JSP、ASP、PHP

1.2web应用程序

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

  • URL

  • tomcat

1.3静态web

  • 静态web缺点:
    • Web页面无法动态更新
      • 轮播图,点击特效:伪动态
      • JavaScript
    • 无法和数据库交互

1.4动态Web

可以与数据库交互:数据持久化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qrTkK1n-1650442133241)(01 基础.assets/image-20220302125908749.png)]

缺点:

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

2、web服务器

2.1技术

ASP:微软的

php:

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

JSP/Servlet:

B/S:浏览和服务器

C/S:客户端和服务器

  • 基于Java
  • 可以承载三高问题

2.2web服务器

IIS(微软)

Tomcat

面向百度编程

2.3Tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHwiluOt-1650442133243)(01 基础.assets/image-20220302132420348.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0UVqI5p-1650442133244)(01 基础.assets/image-20220302132658775.png)]

可以配置端口号、主机的名称

tomcat默认端口号:8080

mysql:3306

http:80

https:443

默认主机名为:lacalhost->127.0.0.1

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

面试题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnhsksIj-1650442133244)(01 基础.assets/image-20220302134042192.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LutLcU6-1650442133245)(01 基础.assets/image-20220302134057916.png)]

3.4 发布一个网站

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rwGA8Ip-1650442133247)(01 基础.assets/image-20220302135113942.png)]

4 HTTP

4.1、什么是HTTP

HTTP (超文本传输一个简单的请求-响应协议,它TCP之上。

HTTPS:安全的(443

4.2两个时代

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

4.3http请求

  • 客户端—发请求—服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PmAUrL1F-1650442133248)(01 基础.assets/image-20220302140739481.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3TmNQDnC-1650442133250)(01 基础.assets/image-20220302141022779.png)]

  1. 请求行
    1. get、post
  2. 消息头
    1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qcxUdJV-1650442133251)(01 基础.assets/image-20220302141454515.png)]

4.4http响应

  • 服务器—响应—客户端
//百度:
Cache-Control:private    //缓存控制
Connection:Keep-Alive    //连接
Content-Encoding:gzip    //编码
Content-Type:text/html   //类型

  1. 响应体

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

    200:请求响应成功 200
    
    3xx:请求重定向
    
        重定向:你重新到我给你新位置去;
    4xx:找不到资源 404
    
        资源不存在;
    5xx:服务器代码错误 500 502:网关错误
    
  3. 面试题

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QG1JSLlc-1650442133252)(01 基础.assets/image-20220302142124447.png)]

5、Maven

5.2 配置

打开maven安装目录下的conf\settings.xml 添加如下信息

	<mirror>
      <id>nexus-aliyun</id>
	  <mirrorOf>central</mirrorOf>
	  <name>Nexus aliyun</name>
	  <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
	</mirror>

添加本地仓库路径:

<localRepository>E:\Environment\apache-maven-3.6.3\maven-repo</localRepository>

5.3 pom.xml的结构

5.4 web.xml中webapp版本问题

自动生成的webapp是2.6版本的,最新版的版本在tomcat中可以找到

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
</web-app>

5.5 maven其他

6、Servlet

6.1 HelloServlet

servlet接口sun公司提供了两个默认的实现类: httpServlet,genericServlet

  • 构建一个普通的Maven项目,删掉里面的src目录,在这个项目里面建立Moudel(模块),这个空的工程就是Maven主工程;
  • 在Maven父子工程中
  • 父项目的pom.xml中自动生成
<!--读pom文件时,要去读modules下的子pom文件-->
<modules>
    <module>HelloServlet</module>
</modules>
  • 子类项目的pom.xml自动生成

    <!--使子项目继承父项目的设置,避免导入重复依赖 eg:son extends parent-->
    <parent>
        <artifactId>javaweb-02-servlet</artifactId>
        <groupId>com.iandf</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    
  • 编写一个Servlet程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6eNllxou-1650442133254)(01 基础.assets/image-20220324225842712.png)]

  • 编写一个普通类,实现Servlet接口,这里我们直接继承HttpServlet(HttpServlet实现了Servlet接口

    public class HelloServlet extends HttpServlet {
         
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         
            PrintWriter writer = resp.getWriter();//获取响应流
            //响应流输出信息
            writer.print("hello servlet");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         
            doGet(req, resp);
        }
    }
    
  • 编写servlet映射

    我们编写的java程序需要被浏览器访问,而浏览器需要访问web服务器,所以我们需要在web服务器中部署servlet,给他一个访问的具体路径。所以我们在web.xml中注册servlet和servlet-mapping

    <!--注册servlet-->
      <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.kuang.HelloServlet</servlet-class>
      </servlet>
      <!--每一个servlet对应一个映射-->
      <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
      </servlet-mapping>
    
  • 配置tomcat

6.2 Servlet原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRPz7AkP-1650442133255)(01 基础.assets/image-20220324230616836.png)]

6.3 ServletContext

当web容器启动时,会创建一个servletContext对象,可以通过这个对象让servlet之间进行通信,代表当前的web应用

1. 共享数据

我们在一个Servlet中通过servlerContext对象保存(set)的数据,可以在另一个servlet通过servlerContext对象get到

public class SetServletContext extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        ServletContext servletContext = this.getServletContext();
        String name =  "狂神";

        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        servletContext.setAttribute("username",name);

    }
}
public class GetServletContext extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        ServletContext servletContext = this.getServletContext();
        String username = (String) servletContext.getAttribute("username");

        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值