javaweb

1.基础概念

web开发

  • web网页的意思
  • 静态web
    • html css
    • 提供给所有人看的数据始终不会发生变化
  • 动态web
    • 淘宝,几乎所有的网站
    • 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息不同
    • 技术栈servlet/ISP、ASP、PHP

web应用程序

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

  • a.html 多个web资源,这些web资源可以被外界访问,对外界提供服务

  • 你能访问到的任何一个页面或者资源,都存在于这个世界的某一台计算机上

  • url统一资源定位符

  • 这个统一的web资源会被放在同一个文件夹下,web应用程序–>tomcat:服务器

  • 一个web应用由多部分组成

    • HTML css js

    • jsp servlet

    • java程序

    • jar包

    • 配置文件(properties)

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

静态web

一次请求request

一次响应response

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2nmkYdXH-1678093948837)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104101809803.png)]

静态web存在缺点,页面无法动态更新,所有用户都看到同一个页面

轮播图,点击特效,伪动态

javascript

vbscript

动态web

页面会动态展示,web的页面展示效果会因人而异

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PVkF7Q1-1678093948838)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104102646359.png)]

缺点

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

优点web页面可以动态更新,所有用户看到都不是同一个页面,它可以与数据库交互

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Su0sB9NL-1678093948839)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104103030570.png)]

web服务器

APS

  • 微软 国内最早流行的

  • 在html中嵌入了vb脚本,asp+com

  • asp开发中,基本一个页面 都会有几千行的业务代码,页面及其换乱

    维护成本高

JSP

-  jsp/servlet
-  b/s浏览和服务器
-  c/s客户端和服务器
-  sun公司主推的b/s架构
-  基于java语言的(所有的大公司活,或者一些开源组件,都用java写)
-  可以承载三高问题带来的影响;
-  语法像asp,asp-->jsp,加强市场强度
-

PHP php开发速度很快,功能很强大,跨平台,代码很简单(70% wp)

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

web服务器

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

IIS

微软的;asp…windows中自带

tomcat

tomcat实际上运行jsp页面和servlet

工作3到5年之后,可以尝试手写tomcat服务器

tomcat下载

tomcat配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYYt4un6-1678093948840)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104132949907.png)]

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

可能遇到的问题,

java环境变量没有配置

闪退问题,需要配置兼容性

乱码问题:配置文件

3.3配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5MTsfJOD-1678093948840)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104173258906.png)]

可以配置启动的端口号

tomcat的默认端口号8080

mysql3306

http80

https443

可以配置主机的名称

默认的主机名为localhost 127.0.0.1

默认网站应存放的位置为webapps

高难度面试题

请你谈谈网站上如何进行访问的

1.输入一个域名;回车

2.检查本机的c盘下,window\System32\drivers\etc\hosts配置文件下有没有这个域名映射,

  • 有 直接返回对应的ip地址,这个地址中,有我们需要访问的web车程序,可以直接访问

  • 127.0.0.1 www.qinjiang.com
    
  • 没有:去dns服务器找,找到的话就返回找不到就返回找不到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0UCLowaM-1678093948841)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230105075445316.png)]

发布一个web网站

不会就先模仿

  • 将自己写的网站,放到服务器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

http

​ http(超文本传输协议)是一个简单的请求,响应协议,它通常运行在tcp之上

  • 文本:html,字符串

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

  • 80

    https:安全的

    • 443

两个时代

http1.0

http2.0

http请求

####请求行

  • 请求行中的请求方式:get

  • 请求方式:get post,head,delete,put,tract

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

    • post :请求能够携带的参数没有限制,大小有限制,不会在浏览器的url地址栏显示数据内容,安全但不搞笑

消息头

http响应

响应体

响应状态码

200:请求响应成功200

3xx:请求重定向

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

    4xx找不到资源 404、

    • 资源不纯在

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

常见面试

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

maven

我们为什么要学习这个技术

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

  2. 如何能够让一个东西自动帮我导入和配置这个jar包

Maven项目架构管理工具

我们目前用来就是方便导入jar包

maven的核心思想:约定大于配置

maven环境配置

修改镜像

本地仓库

在IDEA中使用Maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lHPPfd39-1678093948841)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108222328481.png)]

这个只有在web应用下才有

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YmJdXIq-1678093948842)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108222522515.png)]

标记文件夹功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JltII0Uc-1678093948843)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108222838118.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LuT6rqNb-1678093948843)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108223824090.png)]

在IDEA中配置Tomcat

pom文件

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

maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,

解决方法

//在build中配置resources,来防止我们资源导出失败的问题

IDEA

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwWVAvoc-1678093948844)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230110105132560.png)]

Servlet

Servlet就是sun公司开发动态web的一门技术

sun在这些api中提供一个接口,servlet,如果你想开发一个servlet程序,只需要完成两个小步骤,

  • 编写一个类,实现servlet接口

  • 把开发好的java类部署懂啊web服务器中

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

    HelloServlet

    Serlvet接口Sun公司有两个默认的实现类,HttpServlet,GenericServlet

    1. 构建一个Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里简历moudel;这个空的工程就是maven打主工程

    2. 关于Maven父子工程的理解父亲项目会有

      <modules><module>servlet</moudule>
      </modules>
      
      <parent><artifactId>javaweb-02-servlet</artifactId> <groupId>com.kuang</groupId><version>1.0-SNAPAHOT</version></parent>
      
    3. Maven环境优化

      1. 修改web.xml为最新的

      2. 将maven的结构搭建完整

  1. 编写一个Servlet程序

    1. 编写一个普通类
    2. 实现Servlet接口这里我们直接继承HttpServlet
  2. 编写Servlet的映射

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

  3. 配置Tomcat

    注意:配置项目发布的路径就可以了

  4. 启动测试

Servlet原理

servlet是web服务器调用,web服务器在收到浏览器请求之后,会

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XFRDKP3M-1678093948844)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230115090945524.png)]

Mapping问题

一个Servlet可以指定一个映射路径

一个Servlet可以指定多个映射地址

一个Servlet可以指定通用映射路径

默认请求路径

指定一些后缀或者前缀等等

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

ServletContext

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

  • 共享数据

    我在这个Servlet中保存的数据,可以在另外一个Servlet中拿到

    //this.getInitParameter() 初始化参数
    //this.getServletConfig() Servlet配置
    //this.getServletContext() Servlet上下文
    
  • 获取初始化参数

    
    <!--配置一些web应用初始化参数-->、
    <context-param><param-name>url</param-name><param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
    </context-param>
    
    protected void doGet(HttpServletRequest req,HttpServletRespon resp)
    throws ServletException ,IOException{ServletContext context =this.getServletContext();String url =context.getInitParameter("url");resp.getWriter().print(url);
    }
    
  • 请求转发

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context=this.getServletContext();RequestDispatcher requestDispatcher=context.getRequestDispatcher("gp");//转      发的请求路径requestDispatcher.forward(req,resp);//调用forward实现请求转发
    
  • 读取资源文件

Properties

  • 在java目录下新建properties

  • 在resources目录下新建properties

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

思路:需要一个文件流

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

访问测试即可;

HttpServletReponse

web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequset对象

代表响应的一个HttpServletReponse;

  • 如果要获取客户端请求过来的参数,找HttpServletRequest

  • 如果要给客户端响应一些信息:找HttpServletResponse

    1. 简单分类

      负责向浏览器发送数据的方法

      ServletOutputStream getOutputStream() throws IOException;
      PrintWriter getWriter() throws IOException;
      

      负责向浏览器发送响应头的方法

​ 响应的状态码

  1. 常见应用

    1. 向浏览器输出消息

    2. 下载文件

      要获取下载文件的路径

      下载的文件名是啥

      设置想办法让浏览器能够支持我们需要的东西

      获取下载文件的输入流

      创建缓冲区

      获取OutputStream对象

      将FileOutStream流写入到buffe缓冲区

      使用OutPutStream将缓冲区的数据输出到客户端

  2. 验证码功能

    验证怎么来的

    • 前端实现
    • 后端实现,需要用到java的图片类,生成一个图片
  3. 实现重定向

    • 一个web资源收到客户端请求后,他会通知客户端去访问另外一个web资源C,这个过程叫重定向

    常见场景:用户登录

    void sendRedirext(String var1)throws IOException;
    

    测试

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

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

    相同点

    • 页面都会实现跳转

    不同点

    • 请求转发的时候,url不会产生变化
    • 重定向时候,url地址栏

#HttpServeltRequest

HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获取客户端的所有信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMyV1oKn-1678093948845)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230220100814688.png)]

  1. 获取前端传递的参数

  2. 请求转发

    public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");String username = req.getParameter("username");String password=req.getParameter("password");String[] hobbys = req.getParameterValues("hobbys");System.out.println(password);System.out.println(username);System.out.println(Arrays.toString(hobbys));//通过请求转发//这里的/代表当前的web应用resp.setCharacterEncoding("utf-8");req.getRequestDispatcher("/r/success.jsp").forward(req,resp);}

cookie Session

会话

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

    有状态会话:一个同学来过教室,下次在来教室,我们会知道这个同学,曾经来过,称之为有状态会话

  2. 有状态会话

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

    客户端 服务端

    1. 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了:cookie
    2. 服务器登记你来过了,下次你来的时候我来匹配你 seesion

保存会话的两种技术

cookie

  • 客户端技术(响应,请求)

session

  • 服务器技术,利用这个技术,可以保存用户的会话信息,我们可以把信息或者数据凡在session中

常见常见:网站登陆之后,你下次就不用再登陆了,第二次访问直接就上去了

cookie

  1. 从请求中拿到cookie信息

  2. 服务器响应给客户端cookie

 Cookie[] cookies = req.getCookies();//获得cookiecookie.getName();//获得cookie中的keycookie.getValue();//获得cookie中的valuenew Cookie("LastLoginTime",System.currentTimeMillis()+"")//新建一个cookiecookie.setMaxAge(20*60*60);//设置cookie的有效期resp.addCookie(cookie);//响应

cookie 一般会保存在本地的目录下appdata;

一个网站的cookie是否存在上线

  • 一个cookie只能保存一个信息

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

  • cookie大小有限制4kb

  • 300个cookie浏览器上限

删除cookie

  • 不设置有效期,关闭浏览器,自动失效

  • 设置有效期时间为0

编码解码

URLEncoder.encode("qingjiang","utf-8");
URLDecoder.decode(cookie.getValue(),"UTF-8")

Session(重点)

什么是session:

  • 服务器会给每一个用户(浏览器)创建一个Seesion对象

  • 一个Session独占一个浏览器,只要浏览器没有关闭,这个Seesion就存在

  • 用户登陆之后,整个网站它都可以访问–>保存用户的信息,保存购物车信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E2o1VBij-1678093948845)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230222152812769.png)]

session和cookie的区别

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

使用场景:

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

cookie

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EJh1WJP-1678093948846)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230222174954637.png)]

session

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVO3akQE-1678093948846)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230222175151770.png)]

jsp

什么是jsp

java serverpages:java服务器端页面,也和Servlet一样,用于动态web技术,

最大的特点

  • 写jsp就像在写html

  • 区别

    • html只给用户提供静态的数据

    • jsp页面中可以嵌入java代码,为用户提供动态数据

jsp原理

看文件

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

jsp最终会转化成一个java类

jsp本质上就是servlet


//初始化
public void _jspInit(){}
//销毁
public void _jspDestroy(){}//jspServier
public void _jspService(final javax.servlet.http.HttpServletRequest request,final java.servlet.http.HttpServletResponse response)throws java.io.IOException,javax.servlet.ServeltException

判断请求

内置一些对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fE9zemlz-1678093948847)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223172509594.png)]

输出页面前增加代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrwGQ84U-1678093948847)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223173609945.png)]

以上的这些对象我们可以在jsp页面中可以直接使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2xD84Dr-1678093948848)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223204859266.png)]

在jsp页面中;

只要是java代码就会原封不动的输出

如果是HTML代码,就会被转换为

out.write(“name”)

这样的格式,输出到前端

jsp基础语法

任何语言都有自己的语法,java中有,jsp作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),java所有语法都支持

jsp表达式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6PtsketA-1678093948848)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223213224261.png)]

jsp脚本片段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rGt9zebO-1678093948849)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223213617048.png)]

jsp声明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fon1VR3a-1678093948849)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223230217772.png)]

jsp声明:会被编译到jsp生成java类中,其他的,就会被生到jspService方法中

在jsp嵌入java 代码即可

<%%>
<%=%>
<%!%>
<%--注释--%>

jsp的注释,不会在客户端显示,html会

jsp指令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8IKpwXW9-1678093948850)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223233910909.png)]

jsp9大内置对像

  • PageContext 存东西

  • Request 存东西

  • Response

  • Session 存东西

  • Application(servletcontext) 存东西

  • config(servletconfig)

  • out

  • page

  • exception

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbCOZ5fL-1678093948850)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224111702516.png)]

request客户端向服务端发送请求,产生的数据,用户看完就没有用了,比如:新闻,用户看完没用的

session客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如购物车

application客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能用,比如聊天数据

jsp标签,jstl标签,el表达式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3hDkETk9-1678093948851)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224124123786.png)]

EL表达式

  • 获取数据

  • 执行运算

  • 获取web开发的常用对象

    jdp标签

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwjCfu3f-1678093948851)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224130352893.png)]

jstl表达式

jstl标签库的使用就是为了弥补html标签的不足,它自定义许多标签可以供我们使用,标签的功能和java代码一样

核心标签

格式化标签

sql标签

xml标签

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sRrDCjKg-1678093948852)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224131605963.png)]

jstl标签库使用步骤

  • 引入对应的taglib

  • 使用其中的方法

  • 在tomcat也需要引入jstl的包,否则会报错:jstl解析错误

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ivan5kFR-1678093948852)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224165015643.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxn2HRcd-1678093948853)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224172853992.png)]

javabean

实体类

javabean有特定的写法

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

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

ORM:对象关系映射

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qidrcKM5-1678093948853)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224203724328.png)]

class People{private int id;private String name;private int id;private String address;}class A{new People{1,"秦疆1号",3,"西安"}new People{2,"秦疆2号",3,"西安"}
}

MVC三层架构

什么是MVC

Model(模型)

view (视图)

controller(控制器)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y6f5Hi4r-1678093948854)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225100150640.png)]

早期

用户直接访问控制层,控制层就可以直接操作数据库

servlet --->CURD-->数据库
弊端:程序十分臃肿,不利于维护
servlet的代码中,处理请求,响应,视图跳转,处理jdbc,处理业务代码,处理逻辑代码架构:没什么事加一层解决不了的

MVC三层架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9A7sw5xr-1678093948854)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225101419971.png)]

Model

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

view

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

controller(Servlet)

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

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

  • 控制试图的跳转

登陆---》接收用户的登陆请求---》处理用户的请求(获取用户登陆的参数,username,password)---》交给业务层处理登陆业务(判断用户名密码是否正确:事物)---》dao层查询用户名和密码是否正确---》数据库

过滤器Filter

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

  • 处理中文乱码
  • 登陆验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlisJDYm-1678093948855)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225103050390.png)]

Filter开发步骤

  1. 导包

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCr7W8hA-1678093948855)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225171733576.png)]

  2. 编写过滤器

    1. 导包不要错
    2. 实现fiter接口,重写对应的方法
package com.kuang.filter;import javax.servlet.*;
import java.io.IOException;public class CharacterEncodingFilter  implements Filter {//初始化:web服务器一旦启动,就开始初始化,随时等待过滤对象出现@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("CharacterEncodingFilter初始化");}//Chain:链/**过滤中的所有代码,在过滤 特定请求的时候都会执行必须要让过滤器继续同行*/@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");System.out.println("CharacterEncodingFilter执行前。。。");filterChain.doFilter(servletRequest,servletResponse);//让我们的请求继续走,如果不写 程序在这里会被截止System.out.println("CharacterEncodingFilter执行后");}//销毁@Overridepublic void destroy() {System.out.println("CharacterEncodingFilter销毁");}
}
  1. 在web.xml中配置filter

        <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name>
    <!--        只要是/servlet的任何请求,都会经过这个过滤器--><url-pattern>servlet/*</url-pattern></filter-mapping>
    

监听器

实现一个监听器的接口

  1. 编写一个监听器

    实现监听器的接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WE1INjmq-1678093948856)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226124804462.png)]

  1. web.xml中注册监听器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfDAX7SS-1678093948856)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226124843017.png)]

3.看情况是否使用

过滤器,监听器常见应用

监听器,gui编程中经常使用

package com.kuang.listener;import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;public class TestPanel {public static void main(String[] args) {Frame frame = new Frame("快乐");//创建一个窗口Panel panel = new Panel(null);//面板frame.setLayout(null);//设置窗体的布局frame.setBounds(300,300,500,500);frame.setBackground(new Color(0,0,255));//设置背景颜色panel.setBounds(50,50,300,300);panel.setBackground(new Color(0,255,0));frame.add(panel);frame.setVisible(true);//监听事件,监听关闭事件frame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {}@Overridepublic void windowClosing(WindowEvent e) {}@Overridepublic void windowClosed(WindowEvent e) {}@Overridepublic void windowIconified(WindowEvent e) {}@Overridepublic void windowDeiconified(WindowEvent e) {}@Overridepublic void windowActivated(WindowEvent e) {}@Overridepublic void windowDeactivated(WindowEvent e) {}});}
}

jdbc

什么是jdbc:java链接数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rCe8l1iR-1678093948857)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226214737903.png)]

需要jar包的支持

  • java.sql
  • javax.sql
  • mysql-conneter-java…连接驱动
package com.kuang.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;public class TestJdbc {public static void main(String[] args) {//配置信息//useUnicode=true&characterEncoding=utf-8解决中文乱码String url="jdbc://localhost:3306/jdbc?uesUnicode=true&characterEncoding=utf-8";String username="root";String Password="123456";//加载驱动//Class.forName("com.mysql.jdbc.Driver");//连接数据库//Connection connection= DriverManager.getConnection(url,uesrname,password);//向数据库发送sql的对象Statement:CRUD//Statement statement=connection.createStatement();//编写sqlString sql="select * from users";//执行sql,返回一个resultset:结果集//ResultSet resultSet=statement.executeQuery(sql);//        while(rs.next()){//            System.out.println("id"+rs.getObject("id"));
//        }//关闭连接,释放资源(一定要做,)先开后关
//        rs.close();
//        statement.close();
//        connection.close();}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8Rgj6Qo-1678093948857)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226232230102.png)]

导入数据库依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gtcyxpS8-1678093948858)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226231541543.png)]

idea中连接数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0JYFVCS0-1678093948859)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226231607809.png)]

jdbc固定步骤

  1. 加载驱动
  2. 连接数据库,代表数据库
  3. 向数据库发送sql的对象statement:crud
  4. 编写sql(根据业务,不同的sql)
  5. 执行sql
  6. 关闭连接

预编译sql

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cIOMsNZC-1678093948859)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226233026350.png)]

事物

要么都成功,要么都失败

ACID原则:保证数据的安全

开启事物
事物提交commit
事物回滚rollback
关闭事物转账
a:1000
b:1000a(900)--100-》b(1100)

junit单元测试

依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t32A9y7h-1678093948860)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230227133953574.png)]

简单使用

@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行

@Test
public void test(){System.out.println("Hello")
}
    //加载驱动//Class.forName("com.mysql.jdbc.Driver");//连接数据库//Connection connection= DriverManager.getConnection(url,uesrname,password);//向数据库发送sql的对象Statement:CRUD//Statement statement=connection.createStatement();//编写sqlString sql="select * from users";//执行sql,返回一个resultset:结果集//ResultSet resultSet=statement.executeQuery(sql);

// while(rs.next()){
// System.out.println(“id”+rs.getObject(“id”));
// }

    //关闭连接,释放资源(一定要做,)先开后关

// rs.close();
// statement.close();
// connection.close();

}

}


[外链图片转存中...(img-x8Rgj6Qo-1678093948857)]导入数据库依赖[外链图片转存中...(img-gtcyxpS8-1678093948858)]idea中连接数据库[外链图片转存中...(img-0JYFVCS0-1678093948859)]jdbc固定步骤1. 加载驱动
2. 连接数据库,代表数据库
3. 向数据库发送sql的对象statement:crud
4. 编写sql(根据业务,不同的sql)
5. 执行sql
6. 关闭连接预编译sql[外链图片转存中...(img-cIOMsNZC-1678093948859)]# 事物要么都成功,要么都失败ACID原则:保证数据的安全

开启事物
事物提交commit
事物回滚rollback
关闭事物

转账
a:1000
b:1000

a(900)–100-》b(1100)


### junit单元测试依赖[外链图片转存中...(img-t32A9y7h-1678093948860)]简单使用@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行```java
@Test
public void test(){System.out.println("Hello")
}

javaweb学习,快速入门相关推荐

  1. 150页书籍《PyTorch 深度学习快速入门指南》附PDF电子版

    为什么说是极简教程,首先本书只涵盖了150页.内容比较精简,特别适合作为 PyTorch 深度学习的入门书籍.为什么这么说呢?因为很多时候,一份厚重的书籍往往会削弱我们学习的积极性,在学习一门新的语言 ...

  2. python(十四)--Django学习快速入门

    Django学习快速入门 1. 预备知识 1.1 什么是http协议 1.2 MVC模式和MTV模式 1.2.1 MVC 模式 1.2.2 MTV 模式 2. Django框架介绍 2.1 什么是框架 ...

  3. matlab2019a中迁移学习快速入门(Deep Learning Toolbox系列篇4)

    此示例说明如何使用迁移学习对预训练的卷积神经网络 AlexNet 进行重新训练,以对新图像集进行分类.尝试此示例,了解如何在 MATLAB® 中轻松开始深度学习. 深度学习应用中常常用到迁移学习.您可 ...

  4. JavaWeb学习之入门

    JavaWeb概述 JavaWeb可以分为两个单词来理解:Java和Web. Web:即网页的意思. Web分类 Web可以分为静态web和动态web. 静态web 静态的网页,提供给所有人看的数据始 ...

  5. python 学习快速入门

    ------------------------------------------------------------ author: hjjdebug date:     Thu May 22 1 ...

  6. HbuilderX学习—— 快速入门

    QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群6493473 ...

  7. Freemarker简单概述及其数据类型的简单学习—快速入门(一)

    FreeMarker的主要学习内容 一.FreeMarker概述 FreeMarker中文官方手册(可结合学习)http://freemarker.foofun.cn/ FreeMarker学习笔记源 ...

  8. (深度学习快速入门)第三章第一节:多层感知器简介

    文章目录 一:引入 二:定义 三:反向传播算法 四:构建多层感知器完成波士顿房价预测 一:引入 前文所讲到的波士顿房价预测案例中,涉及到的仅仅是一个非常简单的神经网络,它只含有输入层和输出层 但观察最 ...

  9. oracle自学入门教程,Oracle学习快速入门基础教程

    修改密码方法:1.SQL>: grant connect to USRNAME identified by USRPWD :2.SQL>: alter user USRNAME ident ...

  10. Paddle深度学习快速入门

    1.定义Dataset train_dataset = BaseDataset(train_df) test_dataset = BaseDataset(test_df) 其中train_df和tes ...

最新文章

  1. 多模态数据+知识图谱,这次你的疑难杂症有解了!
  2. R语言dataframe数据列格式转换(从整型integer转化为浮点型float)
  3. [bootStrap]代码块出现横线滚动条
  4. python爬虫面试问题_Python爬虫面试总结
  5. 高校计算机课程建设研讨会通知,常熟理工学院新闻网
  6. mysql 多列合并为一列_多列数据合并一列,还在用数据透视就out了,用=号只要三步完成...
  7. java中$和 的区别详解_Mybatis之#{}与${}的区别使用详解
  8. Linux下nautilus的右键快捷菜单项设置
  9. vue token过期如何处理_超市货架上摆放有过期食品如何定性处理?总局这样答复...
  10. Flurry 统计(国际版)
  11. c语言 字符串转整型
  12. webservice框架 java_JAVA开发Web Service几种框架介绍
  13. 南方cass10.1中文版
  14. 【附源码】计算机毕业设计SSM汽车租赁系统
  15. DOS基础使用专题(强烈推荐)2
  16. 被chatGPT割了一块钱韭菜
  17. 苹果Mac休眠唤醒后出现死机情况如何解决?
  18. 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)
  19. sublime 的一个神秘快捷键
  20. 申请DUNS编码最新规则

热门文章

  1. 时域数据信号滑动处理(1)——滑动傅里叶变换SDFT
  2. 专科中的985,天津职业大学|前身辉煌,最早的职业技术大学
  3. html中input输入框如何左上角显示
  4. 计算机组装工具的使用,计算机组装与维护实训项目三 电脑检测常用工具的使用.doc...
  5. 表格分列怎么用?这个办公小技巧你不会不知道吧
  6. 小红书怎么引流到微信呢?小红书上怎么巧妙留微信
  7. php数组种类,PHP到Javascript数组(种类)
  8. 802.11n 中HT20 HT40是什么意思
  9. 在Java中获取Android端登陆的设备信息
  10. 【Web前端】---js调用本地应用程序