JavaEE【回顾与小结】

1、什么是JavaEE?

JavaEE最核心的组件就是基于Servlet标准的Web服务器,开发者编写的应用程序时基于 Servlet API并运行在Web服务器内部

用B/S架构时,总是通过HTTP协议实现通信;Web开发通常是指开发服务器端的Web应用程序

JDBC

概念:Java DataBase Connectivity java 数据库连接,Java语言操作数据库

JDBC的本质:sun公司定义的一套关于所有关系型数据库的规则,即接口,各个数据库厂商去实现这个接口,提供数据区驱动jar包。

我们可以使用这套接口(JDBC)编程,真正执行的代码时驱动jar包中的实现类

DriverManager:驱动管理对象

Connection:数据库连接对象

Statement:执行sql的对象(不推荐使用,存在sql注入问题)

prepareStatement:执行sql的对象(推荐)

ResultSet:结果集对象(执行查询sql返回)

setAutoCommit:设置事务,是否自动提交(默认自动)

常用数据库连接池:HikaryCP、Druid、Spring JDBC、C3P0

3、Servlet入门

  • 一个Servlet总是继承自HttpServlet然后复写doGet()和doPost()方法。
    • HttpServletRequest(以下简写request)
    • HttpServletResponse (以下简写response)
    • 分别代表,请求和响应
  • 把要运行的 .war文件,放在Tomcat的webapps目录下,启动tomcat即可访问
  • Servlet不能直接运行,必须由Servlet容器自动创建Servlet实例,所以,类似Tomcat这样的Web服务器也被称之为 Servlet容器
  • Servlet容器只会个每个Servlet类创建唯一实例,使用多线程执行其内的方法,在Servlet中定义的实例变量会被多线程同时访问,要注意线程安全,当然request和response实例时Servlet容器传入的局部变量,只能被当前线程访问,不存在多线程问题
  • 小结:
    • 编写Web应用程序就是编写Servlet处理HTTP请求
    • Servlet API提供了HttpServletRequest和HttpServletResponse两个高级接口来封装HTTP请求和响应
    • Web应用程序必须按固定格式组织并打包为.war文件,需要启动Web服务器来加载我们的war包运行Servlet

4、Servlet开发

一个完整的Web应用程序的开发流程如下:

  1. 编写Servlet
    1. 打包为war文件
      1. 复制到Tomcat的webapps目录下
      2. 启动Tomcat

很是繁琐,所以我们需要一个简单可靠,能直接在ide中启动并调用webapp的方法,那就是嵌入式tomcat,因为Tomcat实际上也是一个Java程序,我们看看Tomcat的启动流程

  1. 启动JVM并执行Tomcat的main()方法
  2. 加载war并初始化Servlet
  3. 正常服务

可以看出启动Tomcat为非就是设置好classpath并执行Tomcat某个jar包中main()方法,我们完全可以把Tomcat的jar包全部引进来,然后自己编写一个main()方法,先启动Tomcat,然后让它加载我们的webapp就行了,使用方式:地址

小结:开发Servlet时,可以使用嵌入式Tomcat服务器并加载当前工程的webapp,便于开发调试,且不影响打包部署,能极大地提升开发效率

5、Servlet进阶

  • 一个Webapp中的多个Servlet依靠路径处理不同的请求
  • 映射为 / 的Servlet可以处理所有"未匹配"的请求
  • 如何处理请求取决于Servlet复写的对应方法
  • Web服务器通过多线程处理HTTP请求一个Servlet的处理方法可以由多线程并发执行

6、重定向与转发

  • 重定向(Redirect):地址栏会发生改变,使用方式其一
    • response.sendRedirect("/hello");
  • 转发(Forword):地址栏不会发生改变
    • request.getRequestDispaticher("/hello")
  • 小结:
    • 使用重定向时,因为浏览器知道重定向规则,并且会自动发起新的HTTP请求
    • 使用转发时,则浏览器并不知道服务器内部的转发逻辑

7、Cookie和Session

学习Cookie和Session之前,我们需要先了解一下什么时会话技术

  1. 会话:一次会话中回包含多个请求和响应
  2. 功能:在一次会话的范围内的多次请求间,共享数据
    1. 方式:
      1. 客户端会话技术:Cookie
      2. 服务器端会话技术:Session

Cookie

Cookie:cookie存储数据在客户端浏览器,浏览器对于单个cookie的大小有限制(4kb)以及对同一个域名下的总cookie数量也有限制(20个)

作用:

  1. cookie一般用于存储少量的不太敏感的数据
    1. 在不登录的情况下,完成服务器对客户端的身份识别

实现原理:基于响应头set-cookie和请求头cookie实现

快速入门:

使用步骤:
  1. 创建Cookie对象,绑定数据
    new Cookie(String name,String value)
  2. 发送Cooie对象
    response.addCookie(Cookie cokkie)
  3. 获取Cookie对象,拿到数据
    Cookie[] request.getCookies()

Session

Session:基于唯一ID识别用户身份的机制称为Session。每个用户第一次访问服务器后,会自动后的一个Session ID。如果用户在 一段时间内没有访问服务器,那么Session会自动失效,下次即使带着上次分配的Session ID访问,服务器也认为这是一个新用户,会分配新的Session ID。

Session的特点

  1. session用于存储一次会话的多次请求的数据,村在服务器端
  2. session可以存储任意类型,任意大小的数据

Session适用于中小型Web应用程序,对于大型Web应用程序来说,通常需要避免使用Session机制

Cookie和Session的区别:

  1. session存储数据在服务器端,Cookie在客户端
  2. session没有数据大小限制,Cookie有
  3. session数据安全,Cookie相对不安全

JSP

JSP是一种在HTML中嵌入动态输出的文件,它和Servlet正好相反,Servlet时在Java代码中嵌入输出HTML

JSP可以引入并使用JSP Tag,但语法复杂不推荐使用

MVC开发

流程:

  1. 浏览器发送请求
    1. Controller(控制器)
    2. Model(模型)
    3. View(视图)

优点:Controller专注于业务处理,他的处理结果就是Model。Model可以是一个JavaBean,也可以是一个包含多个对象的Map,Controller只负责把Model转递给View,View之复杂把Model给“渲染”出来,这样三者职责明确,且开发更简单,因为开发Controller时无需关注页面,开发View时无需关心如何创建Model

一个MVC框架时基于Servlet基础抽象出更高级的接口,使得上层基于MVC框架的开发不涉及Servlet相关的HttpServletRequest等接口,处理多个请求更加灵活,并且可以使用任意模板引擎,不必使用 JSP

Filter(过滤器)

Filter:处理公共通用的业务,如更改字符集,拦截未登录用户等等…

基本介绍:

  1. 实现Filter接口
  2. 在doFilter()方法内部,处理请求,最后必须调用chain.doFilter()
  3. 最后使用@WebFilter注解标注该Filter需要过滤的URL。这里的 /* 表示所有路径
  4. 可以在web.xml中配置过滤器的执行顺序

修改请求:Filter可以对请求进行预处理,因此我们可以把很多公共的于处理的逻辑放在Filter中完成,借助HttpServletRequestWraper,我们可以在Filter中实现对原始HtppServletRequest的修改

修改响应:借助HttpServletResponseWrapper,我们可以在Filter中实现对原始HttpServletRequest的修改

小结:

  1. Filter是一种对HTTP请求进行预处理的组件,它可以构成一个处理链,使得公共代码能集中到一起
  2. Filter适用于日志、登陆检查、全局设置等
  3. 设计合理的URL映射可以让Filter链更清晰

Listenner(监听器)

通过Listenner我们可以监听Web应用程序的生命周期,获取HttpSession等创建和销毁的事件,ServletContext是一个WebApp运行期的全局唯一实例,可以设置和共享配置信息

摘录自 廖雪峰的官方网站黑马java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值