Tomcat理解以及JSP入门

一.Tomcat

1.基础部分

静态资源

所有用户访问所得到的反馈是一样的,并且是可以被浏览器所直接解析的资源。比如: HTML CSS
动态资源

每个用户访问所得到的结果是不一样的,需要先转换为静态资源,才能被浏览器解析。比如:JSP
由于入门,只是了解到 JSP 是一种特殊的Servlet

在这里插入图片描述

2.服务器软件

Servlet是用Java编写的服务器端的程序
稍微了解了一下Servlet,可以说是Java实现了Servlet这个接口完成与用户交互,生成动态Web的功能

服务器软件接收用户的请求并且做出响应,而在Web服务器软件中,可以部署Web项目,使用户可以通过浏览器来访问这些项目。
Tomcat 是一种开源的免费的* 中小型 JAVAEE 服务器 ,仅仅只能提供少量的JAVAEE规范 Servlet / JSP。

3.Tomcat 基础

两个核心组件
1. connector:Service中的connector组件可以接收\特定端口的请求
负责生成请求对象和响应对象,根据Response中的内容生成相应的HTTP格式数据。
2. container :有Engine,Host,Context这3个核心
Engine:组件在Service组件中有且只有一个,负责请求处理。。

Host:是Engine的子容器,代表一个虚拟主机,至少有一个defaulthost(localhost),且不需要注册,因为任何与所有Host名字不匹配的请求,都会交由至默认主机。 可运行多个Web应用(一个Context代表一个Web应用),并且负责安装、展开、启动和结束。
其中的name属性是虚拟主机名,只有一个name属性与defaulthost name匹配。
一个Web应用有xml文件和war包和应用目录。
Context:这个属性代表在一个指定的Host上运行一个Web应用,每个Web应用基于WAR文件。
在这里插入图片描述
Server中配置多个Service服务(比如支付服务等),可以实现通过不同的端口号来访问同一台机器上部署的不同Web应用
当Tomcat启动时,Service组件就会监听特定的端口
当请求进来时,Tomcat便可根据协议和端口号选定处理请求的Service;Service一旦选定,Engine也就确定。

JSP只有功能,但是没有Main方法,Tomcat就当作容器提供,并且进行管理,Tomcat就是Servlet/JSP的实现。
config 目录下就是Tomcat的配置文件

- logging properties:日志配置文件
- Server.xml:比如端口号等在这个文件中
- tomcat-users-xml:可以配置Tomcat的访问用户以及每个用户拥有的角色信息
- web.xml:Tomcat部署应用的一个文件,可以配置Tomcat默认配置,比如默认的JSP和默认的Servlet

lib 目录里放的全是jar包

logs 目录是日志信息

webapps是Tomcat默认Web应用部署的应用,如果有一些项目需要部署到Tomcat,就可以放在webapps的目录下

work 目录是JSP编译生成的JAVA源码以及class字节码所存放的目录

JSP的出现时为了更方便的动态输出html,能够在html里面写JAVA。
在这里插入图片描述
最后生成的HTTP格式数据包再发送给浏览器来解析再呈现给用户

Web服务器有一种服务方式是接收用户发送的请求后,直接调用某个业务类来完成请求返回数据
可是这样会导致一种紧耦合的关系。

所以Tomcat里不仅包含了Web服务器还包含了一个Servlet/JSP,通过这个容器来调用应该调用的业务类,就目前的理解,感觉是这些业务类实现了Servlet/JSP 接口,调用service方法,完成了用户发送的请求。

4.Tomcat整体架构

1.两个核心功能
1)处理socket连接。数据字节传输,Request和Response对象的转化
2)加载管理Servlet,处理Request请求(进行用户请求的逻辑处理)

Tomcat的两个容器分别来做这两件事情
Coyote组件是连接器中处理协议规范 ,再将其自己封装的request对象转换成Servletrequest对象给Catalina(Servlet容器)

Tomcat本质上就是一款 Servlet容器,Catalina是其核心,其他所有模块都为Catalina提供支撑
Server里面有很多Service,每一个Service至少有一个Connector与Container相连。

二.JSP学习实操

JSP编译阶段是先检查是否需要编译,如果没有编译过或者被修改过,则重新编译

  • 先解析JSP文件,再转换成Servlet,最后编译Servlet
  • 接着调用 jspInit() 方法初始化
  • 开始执行JSP调用 jspService(HttpServletRequest request,HttpServletResponse response)方法
  • 最后调用 jspDestroy() 方法销毁
    1.语法
 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" language="java" %>
  • <%@.....%>:提供当前指令页的说明
    contentType="text/html; charset=UTF-8" :相当于response.setContentType(“text/html; charset=UTF-8”); 通知浏览器以UTF-8进行中文解码
    import="java.util.*,java.sql.*" 可以通过 , 隔开,导入多个包
  • <%=...%>: JSP表达式,用于输出一段html
    <%=new Date().toLocaleString()%>:可以输出当前时间
  • <%....%>:在这之间可以写java代码
  • <%!...%>:在这之间进行变量和方法的声明
  • <jsp:include page="Filename" >:在jsp页面中包含另一个页面
  • <%-- ...-- %>:代码注释
  • <%out.println("hello jsp");%>:out是隐式对象,可以用于输出,记得最后加 分号
    简单了解个别隐式对象
    pageContext 代表当前页面作用域
    session 代表当会话作用域
    application 代表当全局作用域
    page 对象即表示当前对象

JavaBean的标准

  1. 提供无参public的构造方法(默认提供)
  2. 每个属性,都有public的getter和setter
  3. 如果属性是boolean,那么就对应is和setter方法
package bean;
public class Hero {
    public int id;
    public String name;
    public float hp;
    public int damage;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getHp() {
        return hp;
    }
    public void setHp(float hp) {
        this.hp = hp;
    }
    public int getDamage() {
        return damage;
    }
    public void setDamage(int damage) {
        this.damage = damage;
    }
     
}

获取javabean属性,通过 .

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  import="bean.*"%>
<%
    Person person =new Person();
    hero.setName("帅哥");
    hero.setHeight(167);
    request.setAttribute("person", person);
%>
名字 : ${person.name} <br>
人身高 : ${person.height}

IDEA 创建一个JSP项目:

在这里插入图片描述
在这里插入图片描述
创建完成后是这样:
在这里插入图片描述
去Project Structure中
在这里插入图片描述
Name 随便起
在这里插入图片描述
找到你的Tomcat路径 OK即可
在这里插入图片描述
在这里插入图片描述
会出现带war的一个文件
在这里插入图片描述
点击Run或者快捷键 我这里是 shift+F10
成功启动后会有successfully并弹出一个窗口
在这里插入图片描述
在这里插入图片描述
即完成
参考了一个Tomcat理解的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值