Apache Tomcat是阿帕奇软件基金会(开源组织)下的一个子项目.由java编写,提供了javaweb应用程序访问的能力,内部提供了对于Servlet,JSP,WebSocket的支持,Tomcat是一个开源的免费的服务器
1、Tomcat
下载地址:apache tomcat的官网。Apache Tomcat® - Welcome! 找到你要下载的tomcat的版本
2、因为toncat是基于java开发的一个web容器,因此运行tomcat的时候需要java环境支持(必须配置好java环境,包括JAVA_HOME)
3、tomcat的文件目录
tomcat的根目录 +bin:二进制文件所在目录,包含tomcat服务器启动和停止程序 +conf:服务器配置目录,包含服务器的配置信息(端口号,虚拟路径,开发者模式) +lib:运行时的库文件(*.jar) +temp:临时文件所在目录 +wabapps:项目发布/部署的目录 +work:工作目录(存放对jsp处理之后的java文件和字节码文件) LICENSE 许可文件
4、新建一个javaweb项目
5、项目目录分析
JavaWeb --.idea:idea的项目系统文件 --out是当前项目执行之后生成的一个缓存文件夹,里面存放的是项目的字节码文件 --src:存放java代码的地方 --Web:存放前端文件(Html css jsp) --WEB-INF:项目的配置文件 --web.xml:里面能够设置servlet的版本,设置当前项目的版本,程序默认的启动页面等 --index.jsp:是一个默认的前端启动页面
1、配置环境:
此电脑--->属性--->高级系统配置--->环境变量--->系统变量--->新建
变量名:MAVEN_HOME
变量值:配置maven的文件夹路径:C:\soft\apache-maven-3.5.4
系统变量--->path--->新建--->%MAVEN_HOME%\bin
2、查看是否已经安装成功--->cmd--->mav -vision
3、maven的作用:就是将之前我们在项目中新建lib然后把外部的包放入到项目中,然后再add as library这个步骤给省去了。是个包的管理工具,然后我们只需要写配置文件,会自动下载包,并且将其加载
4、如何配置一个mav项目
File --> settings ---> 左上角输入maven
配置你当前本地的maven库中的信息
5、新建项目的时候,选择maven的格式,根据项目指示一步步的去完成项目配置
基于浏览器+服务器端模式进行运行的应用程序(B/S架构);客户端只需要存在浏览器,或者支持浏览器设备,就可以在任何的地点,在任何的时间,由任何人进行访问服务端。软件的更新升级只需要更新服务端就可以了。主流的web应用程序:csdn,淘宝,京东,12306......
以java语言为基础,在web服务器中创建能够进行数据库访问,处理前端提交的数据能力的应用程序成为javaweb程序
javaweb学习之前的前置知识:
java基础语法
面向对象
数据库和数据库变成
web前端
java高级
JavaWeb开发环境:
安装jdk
idea编程软件
mysql数据库
web容器(web服务器)
Web服务器之Tomcat
http服务器和web服务器
http服务器(静态资源)
http服务器一般只提供静态资源访问的能力(比如:CDN),不提供对于程序的解析,转换等处理。典型的http服务器:
Nginx
Apache
lamp = linux + apache + mysql + php
web服务器(动态资源)
web容器称之为web服务器,提供了对于web应用程序(javaWeb)的运行环境,内部能够对一些特殊的网页模板(jsp)进行解析,编译等操作,提供了动态资源的访问能力,典型的web服务器:
Tomcat
JBOSS
WebLogic
Jetty
javaweb是一个庞大的知识体系,内部综合了各项web开发相关的技术,常见的有以下:
Servlet:服务端小程序
jsp:动态网页
JSTL/EL表达式:表达式语言
Fileter:过滤器
Listener:监听器
WebSocket:服务端消息主动推送技术
MVC:软件架构方式
Servlet技术入门
Servlet是一个组合词,有server + applet组合而成,是一项运行在服务端的java小程序,提供了对客户端http请求处理的能力,同事也能够将处理之后的结果响应到客户端
HelloServlet
/** * 第一个servlet程序 * 1、创建一个普通的java类型,然后继承于HttpServlet * 2、重写doGet/doPost方法(或者直接重写一个service) * 3、配置urL-patter */
/*注解*/ @WebServlet({"/hello","/he","/hi"})//这里就是前端连接后台的时候再http的地址栏中访问的内容 public class HelloServlet extends HttpServlet { //在地址栏的地址中,后面连接servlet中的webServlet后面的地址 //就可以找到类中的方法,默认请求方式是get请求 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet...get"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet...post"); } }
基于注解的配置
从web3.0开始servlet支持使用注解的方式进行配置,servlet,使用方式是直接在servlet类上面使用@WebServlet的注解,需要注明url-pattern地址,如下:
@WebServlet("/hello")
浏览器的访问路径:
http://localhost/20220512_war_exploded/hello
或者:
@WebServlet({"/hello","/he","/hi"}) @WebServlet(urlPatterns = {"/hello","/he","/hi"})
浏览器访问的时候有以下三种映射地址中的任何一个选择就可以了
http://localhost/20220512_war_exploded/hi http://localhost/20220512_war_exploded/hello http://localhost/20220512_war_exploded/he
如果说方法中有service方法和get方法、post方法
doGet方法处理的是get请求
doPost方法处理的是post请求
service方法可以处理两种请求,并且service的优先级更高
基于XML的配置(3.0以下的配置)
在Web3.0之前,对于Servlet的配置还可以通过配置文件的方式进行
web.xml(位于根目录的WEB-INF中)
ServletTest index.html Servlet_01 com.softeem.servlet_01.Servlet_01 Servlet_01 /s1
Servlet的生命周期
以下的五个方法是servlet中常用的方法
@WebServlet("/s3") public class Servlet_03 extends HttpServlet { @Override public void init() throws ServletException { System.out.println("servlet初始化"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("处理前端的get请求的方法"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("处理前端post请求的方法"); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("service方法"); } @Override public void destroy() { System.out.println("servlet声明结束,销毁"); } }
servlet在web服务器中是基于多线程进行实现的,但是是以单例模式进行执行的。(尽量避免在servlet中定义全局变量,存在线程安全的问题),对于所有的客户端的请求是通过在同一个实例中来完成的。
总结servlet的生命周期:
1、web容器(web服务器初始化)初始化会首先加载并且校验所有的servlet
2、当客户端对servlet发起第一次请求的时候,servlet会自动执行init的方法完成一些初始化的工作。(init方法只会执行一次)
3、然后根据客户端发送的请求方法有httpServlet中的service方法决定调用doXXX方法处理请求
4、之后任何客户端请都会直接执行doXXX方法,而不会再次执行init
5、当web容器停止服务的时候,所有的servlet都会执行destroy方法完成销毁工作.