Java菜鸟学习日记9

Tomcat
服务器
  • 从软件角度来理解
    • 服务器就是个网络程序
    • 是一个处于监听状态的网络程序
    • 只要有请求到达,就会立即处理请求并返回响应
    • Tomcat就是这样一个网络程序
      • 它默认监听8080端口
      • 它负责接收HTTP协议请求
      • 它能够让程序员编程处理响应(它需要把写好的程序放到Tomcat中)
  • 从硬件角度理解
    • 服务器是安装了Tomcat等网络程序的计算机
  • 安装和配置Tomcaat
    • 把Tomcat当作普通的网络程序使用
      • 下载Tomcat
      • 解压到F:/Tomcatapache-tomcat-9.0.0.M17
      • 配置环境变量
        • 确保存在JAVA_HOME(必须是这个名字)并指向JDK的安装路径
        • 确保CLASSPATH指向%JAVA_HOME%\lib\tools.jar
        • 新建一个CATALINA_HOME=F:/Tomcatapache-tomcat-9.0.0.M17(解压路径)
          • 该路径后面不能有\,否则报错
Java菜鸟学习日记9
        • bin:编译好的程序或工具
          • startup.bat:可以以普通程序的方式启动Tomcat
            • 关闭窗口则Tomcat关闭
            • Eclipse实际上就以这种方式调用Tomcat
            • startup.bat内部会设置临时环境变量,然后调用catalina.bat。处理参数,日志设置,设置CLASSPATH、主类、最后执行主类
          • shutdown.bat:关闭Tomcat
            • 但通常不用
        • conf:配置文件
        • lib:jar包
        • logs:日志文件(Tomcat运行时会生成很多日志,安装Tomcat位置必须有写权限)
        • temp:临时文件(写权限)
        • webapps:我们写的BS架构应用(Servlet/JSP/框架应用
          • 每一个应用一个文件夹
    • 把Tomcat安装成Windows服务
      • 优势
        • 可以随计算机启动而自动启动(就算计算机重启,也不用手动启动它)
        • 当Tomcat奔溃时,会自动重启
        • 当需要长时间以商业方式正式运行一个应用时
      • 执行bin\service.bat install
        • 内部原理是找到tomcat9.exe当有install参数时,会调用tomcat9.exe并且传递新的参数。要求把tomcat安装成windows服务
  • Tomcat的配置
    • conf config configuration 配置
    • server.xml:用来配置Tomcat服务
      • server:一个(根节点)
        • service[name]:多个,当需要监听多个端口提供Web服务时可以增加Service。
          • connector[port][protocol]:连接器,要监听那个端口,可以指定处理的协议版本。
          • Engine[name][defaultHost]:执行引擎,可以指定默认主机。Connector建立连接后,交给Engine处理。
            • Host[name][appBase][unpackWARs][autoDeploy]:
                • 主机、虚拟主机:多个(靠域名区分)
                • 域名:name
                • 程序文件保存位置:appBase(可以有多个应用)
                • 是否支持自动解压WAR包:unpackWARs
                • 是否支持自动部署:autoDeploy
              • Contex[path]docBase[]:应用、虚拟目录
                • path:访问路径
                • docBase:程序文件的保存位置
    • tomcat-users.xml:用来配置Tomcat管理账号和角色
    • web.xml:Tomcat:Tomcat应用的配置(应用的配置从它继承而来)
      • web-app:一个web应用
        • servlet:多个
          • 默认所有应用都支持两个servlet
          • default:用来处理html\css\js\图片等静态文件
          • jsp:用来将jsp转码成java并编译成class类,然后使用编译出的类生成页面(处理请求)
        • filter
          • 默认带了一些filter但未启用,比如编码转换的filter
        • session-config:
          • 配置session,指定了默认超时时间30min
        • mime-mapping:
          • 配置mime类型
          • 他会影响请求头和响应头中的Comtent-Type头,决定Tomcat是否处理相应的资源
    • Tomcat默认应用 ROOT文件夹中的应用就是默认路径
      • 当访问域名时,打开就是默认应用
      • 其他应用都需要带应用路径 如:/crm 等
      • Tomcat自带一个管理应用
        • 可以查看Tomcat服务器的运行状态
        • 可以管理主机及应用
        • 这个管理应用只能在服务器本身中访问,不能在其它电脑访问
      • 需要配置管理角色和用户
        • tomcat-users.xml 中添加role和user
      • 管理应用
        • 服务器运行状态:操作系统的信息、JVM的信息、端口的连接情况
        • 应用管理:列出主机下的应用、启动/停止/发布应用/卸载应用
        • 主机管理:列出所有主机和添加主机
Dynamic Web Project
第一次创建Dynamic Web Project
  • 需要创建Tomcat运行时环境
Tomcat安装位置
JDK安装位置
preferences—>Server—>Runtime Environments
Context toot 应用路径
WebContent Web内容所在
文件结构
Java菜鸟学习日记9
  • Java Resources/src:是存放Java源代码的位置
  • build/classes:存放生成类
  • WebContent:是web应用存放位置。可以打成WAR包
    • META-INF:WAR包元数据,也可以存放一些配置文件,包含清单文件
    • WEB-INF:存放第三方jar包,jsp等Web资源,
      • web.xml:应用配置文件/部署描述符
    • HTML、CSS、JS图片在开发时,可以放在WebContent中。部署时,如果需要可以放在其它位置(虚拟目录)或其它服务器中
JSP文件相关设置
  • 设置编码为UTF-8:preferences—>Web—>JSP Files:Encoding
  • 创建一个新的JSP模版:preferences—>Web—>JSP Files—>Editor—>Templates
Build Path
  • Faynamic Web Project在编译和运行过程中,需要很多类或Jar包
  • Build Path为Eclipse指明了项目需要类和Jar包的位置(也包括项目源代码的位置,和项目源代码生成的类的位置)
  • 其中最重要的是Libraries里面的Apache Tomcat和JDK(JRE)
修改启动浏览器
  • Window—>Web Browser:改成现代浏览器
在Eclipse中修改应用路径
  • 在项目上点右键—>preference—>Web Project Setting—>Context root
  • 找到Server视图,找到主机,在主机下面删除应用,重启
Eclipse与Tomcat的关系
  • 默认情况下,Eclipse会在当前的Workspace中收集Dynamic Web Project运行所需的各种资源(包含类),放入 .metadata\.plugins\org.eclipse.wst.server.core
  • 另外将Tomcat的配置文件也复制一份,方到Workspace的Servers文件夹中
  • 通过调用javaw来启动Tomcat安装目录中的Tomcat Jar包,在这个过程中
    • 指定ClassPath
    • 指定主类
  • 在Run Configurations—>Apache Tomcat—>创建的Tomcat服务器
    • Arguments:启动参数
    • ClassPath:寻找类的位置
    • Source:源代码和Jar包
Servlet&JSP
  • 创建Servlet类
    • 默认情况下,常见的Servlet类以javax.servlet.http.HttpServlet类为父类
      • HttpServlet由Tomcat提供(在servlet-api.jar包中)
    • 最少要选中一个doXXX的方法,通过这个方法处理请求,这个方法有两个参数
      • request:请求报文(请求行、请求头、请求体)中所有数据全部都在里
      • response:响应报文(响应行、响应头、响应体)都要通过response设置
        • 设置响应头(编码格式)
          • response.setContentType("text/html;charset=UTF-8");
          • response.setHeader("content-Type", "UTF-8");
  • 处理请求
    • 新建一个Servlet类,选择一个doXXX方法
    • 在这个方法中通过request参数获取请求报文中的数据
    • 加工之后response设置响应报文