内容介绍
1 tomcat服务器
2 servlet
服务器

mysql:用来操作数据库数据
nginx:用来部署静态资源项目的,可以被浏览器访问到
tomcat:用来部署静态资源项目和动态资源项目的,可以被浏览器访问到
tomcat服务器
概述
Tomcat:Apache组织提供的一个免费的小型的服务器软件
只要电脑安装了这个软件 就可以把这台电脑称为tomcat服务器或者是web服务器
常见的web服务器:
tomcat 免费的小型的服务器软件 apache
WebLogic收费的大型的服务器软件 oracle
WebSphere收费的大型的服务器软件 IBM
ibm: db2+WebSphere ssm框架
作用
只要是部署在Tomcat服务器里面的静态资源/动态资源项目,就可以被所有人通过浏览器去访问
软件的架构(了解)

C/S架构 Client/Server 客户端/服务器
特点:需要在自己的电脑安装一个客户端 QQ客户端 游戏各种客户端 迅雷客户端
优点:效果比较炫 好看
缺点:占用硬盘空间 服务器只要升级就要求客户端跟着升级
B/S架构 Browser/Server 浏览器/服务器
特点:不需要安装客户端 一个浏览器足矣 网页淘宝 网页京东 网页12306
优点:不会占用硬盘空间 服务器只要升级不要求跟着升级
缺点:效果不炫 所有压力都在服务器
相同点: 都需要和服务器进行数据交互 都是先有请求 后给响应 一定是请求和响应成双成对
我们:B/S架构
安装tomcat服务器
需求:想让自己的一个项目,被所有人通过浏览器去访问
在电脑安装一个tomcat软件 将电脑变成web服务器,步骤:
1 下载一个tomcat服务器软件. 官网地址 http://tomcat.apache.org
2 解压下载好的tomcat. 注意:将解压后的文件copy到一个没有中文和空格的路径下
3 启动tomcat服务:进入bin路径 双击startup.bat 服务器就可以启动:
4 测试 在页面输入地址访问http://localhost:8080
5 关闭 tomcat服务:直接关闭 或者去 bin路径 双击shutdown.bat
Tomcat的常见问题总结
1 一闪而过
原因:没有配置环境变量JAVA_HOME 或者配置错误
解决:配置环境变量
JAVA_HOME,因为tomcat在启动的时候会去找环境变量JAVA_HOME
Tomcat的底层需要JDK的支撑
2 报错 java.net.BindException: Address already in use: bind
原因:端口号被占用
解决:
1 结束正在占用端口的进程
cmd:netstat -ano (pid)
任务管理器关闭占用端口(pid)
2 改变自己的端口号
修改conf/server.xml 大概在69行的位置
或者修改端口号为80: 80是默认端口号.可以不写
tomcat的目录结构(重点)
bin: tomcat的二进制命令文件 关注点: 启动(startup.bat) 关闭(shutdown.bat)
conf:tomcat的所有配置信息 关注点: server.xml(端口 虚拟路径) web.xml(文件类型)
lib:tomcat在运行过程中需要用到的jar包
logs:tomcat在运行过程中产生的日志文件 关注点:catalina.xxxx-xx-xx.log 错误日志
temp:tomcat的临时文件 由tomcat自身去管理
webapps:根目录 http://localhost:8080==webapps/ 用来存放项目让浏览器访问
work:和jsp相关
web项目的结构(重点)
web项目(静态资源和动态资源)的结构:(重点)
myweb(部署在tomcat中)
||
||----html js css 图片 视频 多层目录 通过浏览器可以直接访问到
||
||----WEB-INF目录 不能通过浏览器直接访问到 通过java代码去访问
|| —classes文件夹(.class文件)
|| —lib文件夹(整个项目需要的jar包)
|| —web.xml文件(整个web项目的核心配置文件 作用于整个项目)
servlet.2.5版本 必须得有web.xml文件
servlet3.0以上版本 可以不写配置文件 注解代替
虚拟路径的2种方式发布项目(了解)
1 配置server.xml,添加context标签
在server.xml配置文件的最后加上如下代码:
<Context path="项目别名" docBase="项目所在的硬盘位置" />
谨慎使用(最好单独独立出来一个配置文件)
2 配置独立xml文件
在tomcat/conf目录下新建一个Catalina目录(如果已经存在无需创建)
在Catalina目录下创建localhost目录(如果已经存在无需创建)
在localhost中创建xml配置文件,名称为:xxx.xml(xxx名就是项目的浏览器访问地址名)
xxx.xml中代码如下:
<Context docBase="项目所在的硬盘位置" />
完成作业 idea中集成tomcat,发布一个web项目并且通过浏览器能访问到
步骤如下:
1.

先创建web文件夹,web文件夹下面可以创建html js css 图片 视频 多层目录等,其中WEB-INF文件夹必须有,这个文件夹下面有三个文件夹,分别是
–classes文件夹(存放.class文件)–lib文件夹(存放整个项目需要的jar包)
–web.xml文件(存放整个web项目的核心配置文件 作用于整个项目)
如果不是这种格式,tomcat不接收,无法使用tomcat.
2 在IDE上面部署tomcat ,然后创建java Enterprise项目,详见以下截图
3 启动tomcat就相当于启动项目,可以通过浏览器,输入http://localhost:8080/web_1Zhang/1.jpg 访问1.jpg文件
Servlet

概述
官方:servlet 是运行在 Web 服务器中的 小型 Java 程序
大白话:servlet本质上就是一个类,和普通的类比需要实现servlet 规范
只要实现了servlet的规范,这个类就可以在服务上写java代码程序了
作用
servlet可以用来接受浏览器的请求,以及给浏览器做响应

servlet快速入门
servlet2.5的方式:(为主) 有web.xml配置文件
servlet3.0的方式: 没有web.xml配置文件 如下所示:
@WebServlet(urlPatterns = "/hello1")
public class MyServlet1 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("访问都我了 我是3.0");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
1. 创建JavaEE5的工程
2. 创建一个类 实现servlet接口
3. 在web.xml配置文件中告诉tomcat自己编写的类是一个servlet,配置该servlet在浏览器的访问路径
ps:tomcat在启动的时候,首先加载的就是web.xml文件 只加载一次
// 具有和浏览器请求响应的功能
public class MyServlet1 implements Servlet{
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override // 核心 和浏览器交互的方法
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("浏览器访问到我了...");
// 1 接受请求参数
// 2 使用jdbc连接数据库
// 3 给浏览器做响应数据 (没做响应 底层给浏览器默认会有一个空内容的响应)
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
配置该servlet在浏览器的访问路径
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!--告诉tomat当前servlet的访问路径-->
<servlet>
<!--代表servlet的名称 特点:可以是任意值 但是整个web.xml中唯一-->
<servlet-name>MyServlet1</servlet-name>
<!--代表的是当前servlet的全限定名-->
<servlet-class>cn.itcast.web.MyServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet1</servlet-name>
<!--告诉tomcat当前servlet的访问路径-->
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyServlet2</servlet-name>
<servlet-class>cn.itcast.web.MyServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet2</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyServlet3</servlet-name>
<servlet-class>cn.itcast.web.MyServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet3</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyServlet4</servlet-name>
<servlet-class>cn.itcast.web.MyServlet4</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet4</servlet-name>
<url-pattern>/hello4</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyServlet5</servlet-name>
<servlet-class>cn.itcast.web.MyServlet5</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet5</servlet-name>
<url-pattern>/hello5</url-pattern>
</servlet-mapping>
</web-app>
servlet的执行流程

1. 创建JavaEE6(含6)以上的工程
2. 创建一个类 实现servlet接口
3. 创建servlet,在@WebServlet注解中添加urlPatterns = "/hello",作为请求路径
注意:servlet的对象创建和方法(service)调用都是有web服务器完成的,我们只需要配置自己编写的servlet在浏览器的访问路径即可
servlet的生命周期
init方法 service方法 destroy方法都和servlet的生命周期相关
init方法 Servlet对象只要一创建出来就会调用的方法
service方法 处理好浏览器交互的方法
destroy方法 销毁方法
面试题:聊一下Servlet的生命周期?
默认第一次访问到该servlet的时候,会创建该servlet的对象,执行init初始化方法,只执行一次,所以
我们的servlet是只有一个对象,所有人用的都是同一个servlet
当每次访问到该servlet的时候,他的service处理方法都会执行,访问一次执行一次
当服务器关闭的时候,会销毁当前的servlet对象,执行destroy方法,只执行一次
/*servlet的生命周期
* init(..) : servlet的初始化方法 特点:只要当前的servlet一创建出来 就会自动执行init方法进行初始化
* service(..): 和浏览器交互的核心方法
* destory(): 销毁方法 是用来销毁当前servlet的对象
* */
public class MyServlet2 implements Servlet {
/*
* 执行时机:访问当前servlet的时候 创建当前servlet的对象 执行init方法
* 执行次数: 1次 该类只会创建一个对象 所有人用的都是这个对象
* 执行者: tomcat服务器调用的
* */
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("我出生了...5555555555");
}
/*
* 执行时机: 访问到了就执行
* 执行次数:访问一次执行一次
* 执行者: tomcat自动调用
* */
@Override // 和浏览器交互的方法
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("浏览器访问到我了22222...");
}
/*
* 执行时机:服务器关闭执行
* 执行次数:1次
* 执行者:tomcat服务器
* */
@Override
public void destroy() {
System.out.println("我挂了...666666666666666666");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public ServletConfig getServletConfig() {
return null;
}
}
servlet的体系结构
Servlet–接口
|
|
GenericServlet
|
|
HttpServlet (功能最多)
企业开发中:继承HttpServlet,只需要复写doget和dopost方法,而开发工具已经提供好了模板,我们直接用即可
作业:
在idea中集成tomcat发布一个web项目
web项目中要有servlet
通过浏览器访问到tomcat服务器中的servlet
本文深入解析Tomcat服务器的安装与配置,以及Servlet的工作原理和生命周期。涵盖Tomcat的目录结构、常见问题解决、项目发布流程,Servlet的体系结构、执行流程及生命周期,适合初学者和开发者快速掌握。
1275

被折叠的 条评论
为什么被折叠?



