JavaWeb学习笔记

article/2025/11/7 17:16:59

JavaWeb

1.ASP、PHP、JSP

ASP:

  • 微软:最早流行的就行ASP

  • 在HTML嵌入VB的脚本

  • 在ASP中,基本一个界面就有几千行代码,页面极其混乱,维护成本高

  • c#编程语言

  • IIS服务器

    <h1>
    <%
    system.out.println("hello")
    %>
    <h1>
    

PHP

  • 开发速度很快,功能很强大,跨平台,代码简单

  • 无法承载大访问量的情况;(局限性)

JSP/Servlet

  • B/S:浏览和服务器

  • C/S:客户端和服务器

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

​ 基于Java语言(所有的大公司,一些开源的组件,都是Java写的)

​ 可以承载三高带来的问题

​ 语法像ASP,ASP->JSP,加强市场强度

2.请求方式:Get、Post、HEAD,DELETE,PUT,TRACT(微服务的时候会用到)

  • get:请求携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效。

  • post:请求携带的参数无限制,大小无限制,会在浏览器的URL地址栏显示数据内容,安全,但不高效。

3.响应状态码:

200:请求响应成功

3xx:请求重定向

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

4xx:找不到资源 404

5xx:服务器代码错误 500 502:网关错误

4.HTTP和HTTPS

Http:超文本传输协议,是一个简单的请求响应协议,通常运行在TCP上
  • 文本:html,字符串

  • 超文本:图片,音乐,视频,定位

  • 端口号:80

  • 两个时代

    • http1.0:http/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
    • http2.0:http/1.1:客户端可以与多个web服务器连接后,可以获得多个web资源
Https:安全的
  • 端口号:443
常见面试题:

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

5.Maven

为什么学习这个技术?

​ 1.在javaweb开发中,需要导入大量的jar包,我们手动去导入

​ 2.如何让一个东西自动帮我导入和配置这个jar包,由此Maven诞生了

6.Servlet

  • 简介:Servlet就是sun公司开发动态web的一门技术
  • Sun在这些API中提供一个接口叫做:Servlet,有两个默认的实现类,HttpServlet
    1. 编写一个类,实现Servlet接口
    2. 把开发好的Java类部署到web服务器中
    3. 把实现了Servlet接口的Java程序叫做Servlet

HelloServlet

  1. 编写一个普通类
  2. 实现Servlet接口,这里我们直接继承HttpServlet
public class HelloServlet extends HttpServlet {//由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//ServletOutputStream outputStream = resp.getOutputStream();PrintWriter writer = resp.getWriter();//响应流writer.print("Hello Servlet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

3.编写Servlet的映射

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

<!--  注册Servlet--><servlet><servlet-name>hello</servlet-name><servlet-class>com.wyf.servlet.HelloServlet</servlet-class></servlet>
<!--  Servlet的请求路径--><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>helloServlet</url-pattern></servlet-mapping>

4.配置Tomcat

关于request和response的理解

1.request是代表HTTP请求信息的对象,response是代表HTTP响应信息的对象。

2.当浏览器发请求访问服务器中的某一个Servlet时,服务器将会调用Servlet中的service方法来处理请求。在调用service方法之前会创建出request和response对象。

3.其中request对象中封装了浏览器发送给服务器的请求信息(请求行、请求头、请求实体等),response对象中将会封装服务器要发送给浏览器的响应信息(状态行、响应头、响应实体),在service方法执行完后,服务器再将response中的数据取出,按照HTTP协议的格式发送给浏览器。

4.每次浏览器访问服务器,服务器在调用service方法处理请求之前都会创建request和response对象。(即,服务器每次处理请求都会创建request和response对象)

5.在请求处理完,响应结束时,服务器会销毁request和response对象。

Servlet原理

servlet是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器和 HTTP 服务器上的数据库的中间层。

在这里插入图片描述

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

7.ServletContext

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

  • 共享数据:我在这个Servlet中保存的数据,可以在另外一个servlet中拿到。

    ServletContext是在上层,在不同的servlet中是通用的

ServletContext的属性通用,即setAttribute()和getAttribute(),会用session或者request一些方法代替ServletContext的属性通用

//web.xml
<servlet><servlet-name>hello</servlet-name><servlet-class>com.wyf.servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>hello</url-pattern></servlet-mapping><servlet><servlet-name>getContext</servlet-name><servlet-class>com.wyf.servlet.GetServlet</servlet-class></servlet><servlet-mapping><servlet-name>getContext</servlet-name><url-pattern>getc</url-pattern></servlet-mapping>//需要先通过url请求hello给ServletContext属性赋值(key,value形式)
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String name = "王";context.setAttribute("username",name);//将一个数据保存在ServletContext中,名字为:username,值name}
}//之后再通过url请求取出ServletContext中的值
public class GetServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String username = (String) context.getAttribute("username");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html");resp.getWriter().print("名字" + username );}
}

ServletContext的请求转发

//获得转发路径,调用forward实现请求转发,url路径不会发生改变,但是重定向会发生改变
context.getRequestDispatcher("hello").forward(req,resp);

ServletContext的读取资源文件

Properties

  • 在Java目录下新建properties,(可能会出现在target中classes目录下没有打包后的.properties文件,需要修改配置文件,修改过滤条件)
  • 在resources目录下新建properties

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

思路:需要一个文件流

db.properties文件内容
username=root
password=root
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {InputStream inputStream = this.getServletContext().getResourceAsStream("WEB-INF/classes/db.properties");Properties prop = new Properties();prop.load(inputStream);String user = prop.getProperty("username");String pwd = prop.getProperty("password");resp.getWriter().print(user + pwd);}
}

8.Response文件下载

public class FileServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取文件下载的路径,1.png为项目工程resources目录下的一张图片String realPath = this.getServletContext().getRealPath("/1.png");//2.获取下载的文件名截取最后一个/,得到/后面的字符串就是文件名String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);//3.想办法设置让浏览器能够支持(Content-Disposition)下载我们需要的东西resp.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.获取OutputStream对象ServletOutputStream out = resp.getOutputStream();//7.将FileOutputStream流写到buffer缓冲区,使用OutputStream将缓冲区中的数据输出到客户端while((len = in.read(buffer)) != -1){out.write(buffer,0,len);}in.close();out.close();}

文件下载效果图如下:

9.Response验证码功能(不重要)

验证怎么来的?

  • 前端实现

  • 后端实现

    public class ImageServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//如何让浏览器3秒自动刷新一次resp.setHeader("refresh","3");//在内存中创建图片BufferedImage image = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);//得到图片Graphics2D graphics = (Graphics2D) image.getGraphics();//笔//设置图片的背景颜色graphics.setColor(Color.white);graphics.fillRect(0,0,80,20);//给图片写数据graphics.setColor(Color.BLUE);graphics.setFont(new Font(null,Font.BOLD,20));graphics.drawString(makeNum(),0,20);//告诉浏览器,这个请求用图片的方式打开resp.setContentType("image/jpg");//网站存在缓存,不让浏览器缓存resp.setDateHeader("expires",-1);resp.setHeader("Cache-Control","no-cache");resp.setHeader("Pragma","no-cache");//把图片写给浏览器boolean write = ImageIO.write(image,"jpg",resp.getOutputStream());}//生成随机数private String makeNum(){Random random = new Random();String num = random.nextInt(9999999 ) + "";StringBuffer sb = new StringBuffer();//for循环是为了保证随机数的位数为7位,for循环是重点for (int i = 0; i < 7-num.length();i++){sb.append("0");}num = sb.toString() + num;return  num;}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
    }
    

    效果图如下:

10.实现重定向

public class RedirectServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*resp.setHeader("Location","/img");resp.setStatus(302);*/resp.sendRedirect("/img");//重定向}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

面试题:请你聊聊重定向和转发的区别?

相同点

  • 页面都会实现跳转

不同点

  • 请求转发的时候,url不会发生变化 状态码:307
  • 重定向的时候,url地址栏会发生变化 状态码:302

重定向常见场景:

  • 用户登录

    get方式

void sendRedirect(String var1) throws IOException;

post方式

11.Cookie、Session(保存会话的两种技术)

会话:用户打开一个浏览器,点击了很多超链接,访问了多个web资源,关闭浏览器,这个过程可以称之为会话。

一个网站,怎么证明你来过?

客户端 服务端

1.服务端给客户端一个信件,客户端下次访问带上信件就可以了:cookie

2.服务端登记你来过了,下次你来的时候我匹配你:session

  • Cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。
    • 从请求中拿到cookie信息
    • 服务器响应给客户端cookie

cookie的细节

  • 一个cookie只能保存一个信息,每个cookie大小上限为4kb

  • 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie

  • 300个cookie浏览器上限

  • 删除cookie:不设置有效期,关闭浏览器,自动失效,或者设置有效时间为0

  • 虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是session。

12.Session(重点)

什么是Session:

  • 服务器会给每一个用户(浏览器)创建一个Session对象
  • 一个Session独占一个浏览器,只要浏览器没有关,这个Session就存在
  • 用户登录之后,整个网站它都可以访问。保存用户的信息,保存购物车的信息

一个浏览器对应一个SessionId,不同浏览器的SessionId不同,相同浏览器的SessionId相同

Session的使用


13.Session和Cookie的区别

  • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
  • Session是把用户的数据写到用户独占Session中,服务端保存(保存重要的信息,减少服务器资源的浪费)
  • Session对象由服务器创建


使用场景:

  • 保存一个登录用户的信息
  • 购物车信息
  • 在整个网站中经常会使用的数据,我们将它保存在Session中


在这里插入图片描述
ServletContext可以存取不同用户中的数据,Session只能存取当前用户数据,ServletContext后期改名为ApplicationContext

14.JSP

Java Server Pages:Java服务器端界面,也和servlet一样,用于动态Web技术

最大的特点:

  • 写JSP就像是在写HTML
  • 区别
    1. HTML只提供给用户静态数据
    2. JSP中可以嵌入JAVA代码,为用户提供动态数据

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet

JSP最终也会转变为一个Java类,JSP本质就是一个Servlet

15.JavaBean特定写法

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的getter/setter方法

一般用来和数据库的字段做映射 ORM;

ORM:对象映射关系

  • 表—>类
  • 字段—>属性
  • 行记录—>对象

16.MVC三层架构

微服务之前都是这个架构,MVC三层架构

Model层

  • 业务处理:业务逻辑(Service)
  • 数据持久层:CRUD(Dao)

View层

  • 展示数据
  • 提供链接发送Servlet请求(a、form、img…)

Controller层(Servlet)

  • 接收用户的请求(req:请求参数、Session信息…)

  • 交给业务层处理对应的代码

  • 控制视图的跳转

17.Filter(重点)

1.Filter:过滤器,用来过滤网站的数据;

  • 处理中文乱码
  • 登录验证…

2.编写过滤器

  • 导包不要错

  • 实现Filter接口

public class CharacterEncodingFilter implements Filter {//初始化:Web服务器启动,就已经初始化了,随时等待过滤对象出现@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html;charset=UTF-8");/*filterChain:过滤器链1.过滤中的所有代码,在过滤特定请求的时候都会执行2.必须要让过滤器继续同行*/System.out.println("CharacterEncodingFilter执行前");filterChain.doFilter(servletRequest,servletResponse);//让我们的请求继续走,如果不写,程序到这里就被拦截停止System.out.println("CharacterEncodingFilter执行后");}//销毁:Web服务器关闭的时候,过滤会销毁@Overridepublic void destroy() {}
}
  • 在web.xml中配置Filter
  <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.wyf.Filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!--只要是/servlet/...的任何请求,都会经过这个过滤器--><url-pattern>/servlet/*</url-pattern></filter-mapping>

18.用Filter进行简单的未登录拦截

实现一个过滤器,判断用户Session的属性是否存在(登录成功后给Session赋值),不存在重定向错误界面

19.JDBC

什么是jdbc?Java连接数据库

jdbc的ACID四个特性,原子性,一致性,隔离性,持久性

Java代码中一定要通知数据库开启事务

20.超市订单管理系统-实战(部分代码)

1.数据库配置文件db.properties

2.连接数据库

在这里插入图片描述

在这里插入图片描述

3.写一个乱码公共过滤器


http://chatgpt.dhexx.cn/article/v1fXJySS.shtml

相关文章

javaweb学习路线

一、学习顺序 1、java语法&#xff0c;语法很重要&#xff0c;没有这个根本后面的也进行不下去&#xff0c;建议先学会应用了再去研究jdk源码&#xff0c;本身就是新手就想从原理开始了解&#xff0c;估计非常吃力&#xff0c;效果也不一定好。 2、数据库&#xff0c;首先学关…

JavaWeb知识点汇总

JavaWeb知识点汇总 前言&#xff1a;跟了狂神javaweb学习有一阵子了&#xff0c;这里简单进行笔记总结&#xff0c;也是第一次使用markdown写这么长的文章&#xff0c;虽然是跟着敲的&#xff0c;也是多理解了一遍&#xff0c;以及具体上手自己写的代码和相应效果图。发布于此…

JAVAweb入门基础

1、JAVAweb开发原理 2、web服务器 2.1、技术服务 ASP&#xff08;微软 国内最早流行;在HTML中嵌入了VB的脚本&#xff0c;ASPCom;在ASp开发中&#xff0c;基本一个页面都有几千行的业务代码&#xff0c;页面及其混乱&#xff1b;维护成本高&#xff01;&#xff09; PHP(PHP…

JavaWeb学习知识总结

1.自定义 servlet 的三种方式&#xff0c;及区别? 方式一&#xff1a;编写一个类去实现Servlet接口(必须重写Servlet接口里面所有的抽象方法)方式二&#xff1a;编写一个类去继承GenericServlet抽象类(重写生命周期的service方法&#xff08;抽象法&#xff09;)GenericServle…

JavaWeb学习路线(总结自尚硅谷雷神SSM|极其详细|思路清晰|适合入门/总复习)

文章目录 JavaWeb前言说明前端技术html&#xff08;掌握&#xff09;1.标签 css&#xff08;了解&#xff09;1.简介2.常用样式定义 JavaScript&#xff08;掌握&#xff09;1.简介2.基本语法2.1声明变量2.2声明对象2.3声明方法 3.事件 JQuery&#xff08;精通&#xff09;1.简…

https证书安装部署 https证书怎么安装

http和https是我们上网的时候经常见到的网络协议&#xff0c;当我们进入一个网站的时候&#xff0c;网站的域名有时候是http开头的&#xff0c;有时候又是https开头的&#xff0c;可能你们会好奇&#xff0c;这两者究竟有什么区别呢&#xff1f;https证书又是什么呢&#xff1f…

申请SSL证书,并给域名配置SSL证书,并部署服务器;SSL证书的下载和安装

注&#xff1a;本文相关操作皆由黄色荧光笔标注 申请SSL 我这里以阿里云服务器为例&#xff0c;SSL证书是从阿里云申请的一年免费的证书&#xff0c;付费的也可以参考。 先是登录阿里云控制台&#xff0c;进入&#xff1a;SSL证书&#xff08;数字证书管理服务&#xff09;。…

SSL证书安装部署

微信小程序时刻监控产品的信息&#xff0c;夜里突然没了数据。阿里云服务器故障&#xff1f; 登录云管理&#xff0c;查看一切正常&#xff0c;e-mail有一封邮件显示ssl证书到期&#xff0c;需重新部署。 申请证书 创建证书 在Apache服务器上安装SSL证书 - 数字证书管理服务 -…

如何给网站安装SSL证书?

视频教程&#xff1a;ssl证书安装视频教程&#xff08;b站&#xff09;https://www.bilibili.com/video/BV1P3411h7je 每个站长都有必要为网站安装SSL证书。 首先&#xff0c;我们需要获得一个SSL证书&#xff0c;也称为HTTPS证书。 筛选SSL证书类别需要的思考不亚于流行的垃…

Https证书怎么安装

第一步&#xff1a;首先我们去阿里云申请证书&#xff0c;证书审核完成下载进行部署。至于部署什么类型的&#xff0c;需要跟服务器商确认。 第二步&#xff1a;去服务器端找到SSL部署的配置。 下载申请下来的密钥。填入对应的账户&#xff0c; 完成&#xff01;提示已部署

ssl证书下载与安装 – 如何下载ssl证书

证书是审核完毕后您将会收到&#xff1a; 1. 服务器证书 2. 服务器中级 CA 证书 1、 配置 Apache 打开 apache 安装目录下 /etc/httpd/conf/httpd.conf 文件&#xff0c;找到 #LoadModule ssl_module modules/mod_ssl.so 删除行首的配置语句注释符号“ #” 保存退出。 …

华为云ssl证书申请和安装

华为云ssl证书申请和安装 1.打开网站&#xff0c;点击领取免费证书&#xff0c;点击立即购买。 2.打开华为云控制台&#xff0c;找到云证书管理服务。确认付款后自动跳转&#xff0c;点击申请证书。 填写自己的域名。 填写授权人信息&#xff0c;姓名、电话、邮箱。 3.验证域名…

charles SSL证书安装

charles抓取https协议报文需要配置SSL通用证书&#xff0c;否则会导致乱码&#xff0c;本文介绍Charles 的 CA 证书安装方法。 1. 电脑安装SSL证书 选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate” 2. 浏览器安装SwitchyOmega插件 插件下…

怎么在服务器上安装SSL证书?服务器证书安装配置指南

现如今&#xff0c;网上安全传输协议HTTPS应用是越来越广泛了&#xff0c;再加上使用SSL证书的站点也越来越多。很多网站在应用SSL证书的时候&#xff0c;通常是不知道怎么给服务器安装SSL证书的&#xff0c;下面就让摩杜云来跟大家讲解一下怎么在服务器上安装SSL证书。 给服务…

如何安装ssl证书?

今日蔚可云网编先协助大伙儿解读一下完全免费ssl证书安装和如何安装证书&#xff0c;期望根据网编的解读能协助到应用电子计算机的情况下碰到这种难题的小伙伴们。 一、完全免费ssl证书安装 网编先带大家一起来解析一下完全免费ssl证书安装&#xff0c;最先应当进到官方申请机…

windows ------ 证书导入(安装)

https://blog.51cto.com/u_15127513/3862855 1、选中证书&#xff0c;右击点击安装证书 2、点击下一步 3、选择受信任的根证书颁发机构 点击下一步 4、点击完成 提示安全警告点击是&#xff0c;因为是自己知道的证书 ​​​​​​​

如何安装HTTPS证书

HTTPS证书安装 各种WEB服务器的HTTPS证书安装步骤如下&#xff1a; Nginx/TengineApacheTomcatIIS 6IIS 7/8 Nginx/Tengine 安装证书 文件说明&#xff1a; 证书文件214852718690540.pem&#xff0c;包含两段内容&#xff0c;请不要删除任何一段内容。如果是证书系统创建的…

SSL证书安装教程

Nginx配置SSL证书 最基本的配置 ssl_certificate "path\fullchain.crt" ssl_certificate_key "path\private.crt" server {listen 80;listen 443 ssl http2;ssl_certificate path\fullchain.crt;ssl_certificate_key path\private.crt;ssl_session_tim…

SSL证书安装配置

我们将简单的介绍如何安装配置SSL证书。最近有网友反映教程不全&#xff0c;特此提供一个万能教程链接&#xff0c;如果不会也可以请Gworg进行收费技术支持。另外在里面也可以搜索教程&#xff0c;常见都会有&#xff0c;包括虚拟主机、自助建站控制面板。 SSL证书所有服务器环…

https免费证书(终身)申请和安装教程

目前来说&#xff0c;网站安装https是大势所趋&#xff0c;几乎每一个网站在建站之初&#xff0c;就会安装好https。 一、https是什么 “https&#xff08;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket Layer&#xff0c;超文本传输安全协议&#xff0…