栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

JavaWeb笔记小结

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

JavaWeb笔记小结

文章目录
  • 第一章 Tomcat 基础
    • 一、 web 概念
      • 1. 软件架构
      • 2.资源分类
    • 二、常见的web服务器
      • 1、 概念
      • 2、常见服务器软件
      • 3、Tomcat 历史
      • 4、 Tomcat 安装
      • 5、Tomcat 目录结构
      • 6、Tomcat 启动停止
    • 三、Tomcat 架构
      • 1、HTTP工作原理
      • 2、HTTP服务器请求处理
      • 3、Servlet容器工作流程
      • 4、Tomcat整体架构
    • 四、Tomcat 服务器配置
      • server.xml
    • 五、手写Tomcat
    • 六、创建Javaweb项目
      • 1、创建项目
      • 2、项目结构
      • 3、配置Tomcat
  • 第二章 Servlet入门
    • 一、Servlet架构
    • 二、Servlet任务
    • 三、Servlet相关知识
      • 1、Servlet加载时机
      • 2、Servlet的生命周期
      • 3、实现一个servlet
        • 1、创建Servlet的三种方式
        • 2、配置Servlet的两种方式
    • 四、servlet的匹配规则
      • 1、四种匹配规则
      • 2、匹配顺序
      • 3、注意问题
    • 五、请求和响应
      • 1、请求-request
        • (1)request概述
        • (2)request获取请求头数据
        • (3)request获取请求相关的其它方法
        • (4)request获取请求参数
        • (5)请求转发
        • (6)request域方法
      • 2、响应-response
        • (1) response概述
        • (2)response响应正文
        • (3)设置响应头信息
        • (4)设置状态码及其他方法
        • (5)重定向
      • 3、sesion和cookie
  • 第三章 jsp入门
    • 一、JSP基础语法
      • 1、JSP模板元素
      • 2、JSP脚本片段
      • 3、JSP注释
    • 二、JSP原理
      • 1、JSP的本质
      • 2、_jspService方法
      • 3、jsp在服务器的执行流程
    • 三、JSP指令
      • 1、JSP指令标识的语法格式
      • 2、Page指令
      • 3、include指令
    • 四、JSP标签
      • 一、 Jsp标签分类
    • 五、九大内置对象
    • 六、JSP属性作用域
    • 七、静态资源的路径问题
    • 八、错误页面、404页面、欢迎页
  • 第四章 EL表达式和JSTL标签库
    • 一、EL表达式
      • 1、特点
      • 2、域对象
      • 3、支持的运算
      • 4、其他的内置对象
      • 5、EL表达式的缺陷
    • 二、JSTL标签工具类
      • 1、基本介绍
      • 2、使用方式
      • 3、重要标签的使用
  • 第五章 Listener、Filter
    • 一、概念
    • 二、生命周期
      • 1、servlet:
      • 2、filter:
      • 3、listener:
    • 三、使用方式
  • 第六章 常用模板


第一章 Tomcat 基础 一、 web 概念 1. 软件架构
  1. C/S: 客户端/服务器端
  2. B/S: 浏览器/服务器端
2.资源分类
  1. 静态资源: 所有用户访问后,得到的结果都是一样的,称为静态资源。静态资源可以直接被浏览器解析。如图片、视频。
  2. 动态资源: 每个用户访问相同资源后,得到的结果可能不一样 , 称为动态资源。动态资源被访问后,需要先转换为静态资源返回给浏览器通过浏览器进行解析。如:servlet,jsp,php,asp…
二、常见的web服务器 1、 概念
  1. 服务器:安装了服务器软件的计算机
  2. 服务器软件:接收用户的请求,处理请求,做出响应
  3. web服务器软件:接收用户的请求,处理请求,做出响应。

在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目

2、常见服务器软件

动态服务器:

  • webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
  • webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
  • JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
  • Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。(300左右的并发)

静态的服务器:

  • nginx(代理,反向代理等)极高的并发
  • apache
3、Tomcat 历史

1) Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发,名称为 “JavaWebServer”。
2) 1999年 ,在 Davidson 的帮助下,该项目于1999年于apache 软件基金会旗下的 JServ 项目合并,并发布第一个版本(3.x), 即是现在的Tomcat,该版本实现了Servlet2.2 和 JSP 1.1 规范 。
3) 2001年,Tomcat 发布了4.0版本, 作为里程碑式的版本,Tomcat 完全重新设计了其架构,并实现了 Servlet 2.3 和 JSP1.2规范。

目前企业中的Tomcat服务器, 主流版本还是 7.x 和 8.x 。

4、 Tomcat 安装

下载地址

5、Tomcat 目录结构
目录目录下文件说明
bin/存放Tomcat的启动、停止等批处理脚本文件
startup.bat ,startup.sh用于在windows和linux下的启动脚本
shutdown.bat ,shutdown.sh用于在windows和linux下的停止脚本
conf/用于存放Tomcat的相关配置文件
Catalina用于存储针对每个虚拟机的Context配置
context.xml用于定义所有web应用均需加载的Context配置,如果web应用指定了自己的context.xml ,该文件将被覆盖
catalina.propertiesTomcat 的环境变量配置
catalina.policyTomcat 运行的安全策略配置
logging.propertiesTomcat 的日志配置文件, 可以通过该文件修改Tomcat 的日志级别及日志路径等
server.xmlTomcat 服务器的核心配置文件
tomcat-users.xml定义Tomcat默认的用户及角色映射信息配置
web.xmlTomcat 中所有应用默认的部署描述文件, 主要定义了基础Servlet和MIME映射。
lib/Tomcat 服务器的依赖包
logs/Tomcat 默认的日志存放目录
webapps/Tomcat 默认的Web应用部署目录
work/Web 应用JSP代码生成和编译的临时目录
6、Tomcat 启动停止
双击 bin/startup.bat 文件 启动
双击 bin/shutdown.bat 文件 停止
访问:http://localhost:8080
三、Tomcat 架构 1、HTTP工作原理

HTTP协议是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP是基于TCP/IP协议来传递数据的(HTML文件、图片、查询结果等),HTTP协议不涉及数据包(Packet)传输,主要规定了客户端和服务器之间的通信格式

2、HTTP服务器请求处理

浏览器发给服务端的是一个HTTP格式的请求,HTTP服务器收到这个请求后,需要调用服务端程序来处理,所谓的服务端程序就是你写的Java类,一般来说不同的请求需要由不同的Java类来处理

图1 , 表示HTTP服务器直接调用具体业务类,它们是紧耦合的

图2,HTTP服务器不直接调用业务类,而是把请求交给容器来处理容器通过Servlet接口调用业务类。因此Servlet接口和Servlet容器的出现,达到了HTTP服务器与业务类解耦的目的。而Servlet接口和Servlet容器这一整套规范叫作Servlet规范。Tomcat按照Servlet规范的要求实现了Servlet容器,同时它们也具有HTTP服务器的功能。作为Java程序员,如果我们要实现新的业务功能,只需要实现一个Servlet,并把它注册到Tomcat(Servlet容器)中,剩下的事情就由Tomcat帮我们处理了。

3、Servlet容器工作流程

当客户请求某个资源时,HTTP服务器会用一个ServletRequest对象把客户的请求信息封装起来,然后调用Servlet容器的service方法,Servlet容器拿到请求后,根据请求的URL和Servlet的映射关系,找到相应的Servlet,如果Servlet还没有被加载,就用反射机制创建这个Servlet,并调用Servlet的init方法来完成初始化,接着调用Servlet的service方法来处理请求,把ServletResponse对象返回给HTTP服务器,HTTP服务器会把响应发送给客户端。

4、Tomcat整体架构

我们现在知道了Tomcat要实现两个核心功能:

1) 处理Socket连接,负责网络字节流与Request和Response对象的转化。
2) 加载和管理Servlet,以及具体处理Request请求。

因此Tomcat设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

大致图解为:

四、Tomcat 服务器配置

Tomcat 服务器的配置主要集中于 tomcat/conf 下的 catalina.policy、catalina.properties、context.xml、server.xml、tomcat-users.xml、web.xml 文件。

server.xml

server.xml 是tomcat 服务器的核心配置文件,包含了Tomcat的 Servlet 容器(Catalina)的所有配置。


Server:
Server是server.xml的根元素,用于创建一个Server实例,默认使用的实现类是org.apache.catalina.core.StandardServer


...

属性说明:
port : Tomcat 监听的关闭服务器的端口。
shutdown: 关闭服务器的指令字符串。


Connector:
Connector 用于创建链接器实例。默认情况下,server.xml 配置了两个链接器,一个支持HTTP协议,一个支持AJP协议。因此大多数情况下,我们并不需要新增链接器配置,只是根据需要对已有链接器进
行优化。


属性说明:
1) port: 端口号,Connector 用于创建服务端Socket 并进行监听, 以等待客户端请求链接。如果该属性设置为0,Tomcat将会随机选择一个可用的端口号给当前Connector 使用。
2) protocol : 当前Connector 支持的访问协议。 默认为 HTTP/1.1
3) connectionTimeOut : Connector 接收链接后的等待超时时间, 单位为毫秒。 -1 表示不超时
4) URIEncoding : 用于指定编码URI的字符编码, Tomcat8.x版本默认的编码为 UTF-8

五、手写Tomcat 六、创建Javaweb项目 1、创建项目


2、项目结构

3、配置Tomcat



第二章 Servlet入门

servlet就是一个java程序,用来处理请求和响应。

一、Servlet架构

二、Servlet任务

处理请求request,生成响应response

三、Servlet相关知识 1、Servlet加载时机

在默认情况下,当Web客户第一次请求访问某个Servlet时,Web容器会创建这个Servlet的实例。当设置了web.xml中的子元素后,Servlet容器在启动Web应用时,将按照指定顺序创建并初始化这个Servlet。设置的数值大于0即可。


  HelloServlet
  com.langsin.servlet.HelloServlet
  2

2、Servlet的生命周期
  • init():Servlet进行初始化
  • service():Servlet处理客户端的请求
  • destroy():Servlet结束,释放资源

在调用destroy()方法后,Servlet由JVM的垃圾回首器进行垃圾回收


init()方法:

Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化在Servlet生命周期中init()方法只被调用一次
当用户调用一个Servlet时,Servlet容器就会创建一个Servlet实例,每一个用户请求都会产生一个新的线程,init()方法简单的创建或加载一些数据,这些数据将会被用在Servlet的整个生命周期。


service()方法:

service()方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service()方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service()方法检查HTTP 请求类型(GET、POST(增加)、PUT(修改)、DELETE 等),并在适当的时候调用doGet()、doPost()等方法。


destroy()方法:

destroy()方法只会被调用一次,在Servlet生命周期结束时被调用。destroy()方法可以让Servlet关闭数据库连接、停止后台、把cookie列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用destroy()方法之后,Servlet对象被标记为垃圾回收。

总结:

  • 在首次访问某个Servlet时,init()方法会被执行,而且也会执行service()方法。
  • 再次访问时,只会执行service()方法,不再执行init()方法。
  • 在关闭Web容器时会调用destroy()方法。
3、实现一个servlet

当服务器接收到一个请求,就要有一个servlet去处理这个请求,所以完成一个servlet通常需要两步走。

  1. 写一个java程序定义一个servlet
  2. 配置一下servlet确定这个servlet要处理哪一个请求
1、创建Servlet的三种方式

(1)实现javax.servlet.Servlet接口。
(2)继承javax.servlet.GenericServlet类
(3)继承javax.servlet.http.HttpServlet类(常用)

2、配置Servlet的两种方式

(1)使用web.xml文件配置Servlet


  user
  com.controller.UserServlet


  user
  /user.do

(2)使用注解进行Servlet配置

@WebServlet("/user.do")
四、servlet的匹配规则 1、四种匹配规则

(1) 精确匹配

中配置的项必须与url完全精确匹配。


  user
  /user.do

(2) 路径匹配

以“/”字符开头,并以“bb是精确匹配,合法,这里的*不是通配的含义

" @WebFilter(" public class JDBCUtils { // 1. 声明静态数据源成员变量 private static DataSource ds; // 2. 创建连接池对象 static { // 加载配置文件中的数据 InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); Properties pp = new Properties(); try { pp.load(is); // 创建连接池,使用配置文件中的参数 ds = DruidDataSourceFactory.createDataSource(pp); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } // 3. 定义公有的得到数据源的方法 public static DataSource getDataSource() { return ds; } // 4. 定义得到连接对象的方法 public static Connection getConnection() throws SQLException { return ds.getConnection(); } // 5.定义关闭资源的方法 public static void close(Connection conn, Statement stmt, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) {} } if (stmt != null) { try { stmt.close(); } catch (SQLException e) {} } if (conn != null) { try { conn.close(); } catch (SQLException e) {} } } // 6.重载关闭方法 public static void close(Connection conn, Statement stmt) { close(conn, stmt, null); } }

Util-Jedis

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


public final class JedisUtil {
    private static JedisPool jedisPool;

    static {
        //读取配置文件
        InputStream is = JedisPool.class.getClassLoader().getResourceAsStream("jedis.properties");
        //创建Properties对象
        Properties pro = new Properties();
        //关联文件
        try {
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取数据,设置到JedisPoolConfig中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));

        //初始化JedisPool
        jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));


    }


    
    public static Jedis getJedis() {
        return jedisPool.getResource();
    }

    
    public static void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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