目录
Tomcat:web服务器软件
Servlet: server applet(运行在服务端的小程序)
Tomcat:
web服务器软件:可以将自己的项目部署在此软件上。
下载。安装。卸载。启动。关闭。配置。
Download——Core——自行选择32或64位
安装:
任意文件夹 解压安装包就行了。
卸载:删除目录就好了
启动:bin目录下的startup.bat(双击)(闪退是JDK没配置好)——自己有一些服务,可已访问localhost:8080,默认端口。(cmd——ipconfig 查看ip地址 通过ip:8080访问。)
出现问题:1、黑窗口一闪而过:没有正确配置JAVA_HOME环境变量。
解决:属性——高级——环境变量——
错误配置:直接使用路径,不使用变量。
正确:使用变量
新建之后
使用变量代替路径。
2、启动报错:
日志文件夹查看信息!!!
占用端口号:
1、关闭占用的程序,关闭。——黑窗口使用netstate -ano 找8080对应的pid 任务管理器关闭。
2、更改默认端口号,——配置文件夹conf 找server.Xml文件更改
Connector port
一般将端口号设置为80,可以不用输入端口号
关闭:
1、正常关闭——bin/shutdown.bat 启动窗口 ctrl+c
2、强制关闭 —— 启动窗口关闭
配置:部署项目的方式
1、将项目放在webapps文件夹下 ——访问路径localhost:端口号/访问路径/资源名称:例如localhost:8080/Hello/Hello.html
简化部署,将项目打包成.war的压缩包,放在webapps下,会自动解压。(保证Tomcat开启)
2、引用部署: conf——server.xml 更改
表示从d盘的hello文件夹下 找项目 hehe表示项目的访问路径。
localhost:8080/hehe/hello.html
3、xml部署的是整体,可能导致tomcat核心文件损坏,
xml中写,访问路径就为xml文件的名称 localhost:8080/xml文件名称/hello.html(项目资源)
(项目名)
动态项目目录
静态项目目录 为静态资源。
************
将Tomcat集成在idea中 创建JAVAEE项目,部署项目。
RUN——Edit Configurations...
defaults Tomcat Server
创建项目
完成后可在下web 创建html,jsp
修改配置,不用每次更改后启动Tomcat
RUN——Edit Configurations...
两个都改
Servlet: server applet(运行在服务端的小程序)
- Servlet 就是一个接口,定义了Java类被浏览器访问到(或Tomcat 识别)的规则
- 我们自定义的类实现Servlet 接口,复写方法。
入门:创建javaee项目,定义类,实现接口Servlet5个方法。
上面的 Tomcat 中的JAVAEE项目,src下建包 ,建类。
配置文件
- 当服务器接收到浏览器的请求后,会解析肋路径,获取访问的Servlet资源路径
- 查找web.xml文件,是否有对应的<url -pattern>标签内容
- 如果有,则在《servlet——class》使用全类名
- Tomcat会将字节吗文件加载进内存,并创建对象
- 调用其方法
五大方法讲解——public class kiki implements Servlet { /** * 访问时执行一次,的方法(类似静态代码块) * @param servletConfig * @throws ServletException */ @Override public void init(ServletConfig servletConfig) throws ServletException { } /** *获取config对象 * @return */ @Override public ServletConfig getServletConfig() { return null; } /** * 提供访问方法 * 访问一次执行一次,执行多次 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { } /** * 获取Servlet的一些信息,作者 ,版本等。 * @return */ @Override public String getServletInfo() { return null; } /** * 正常关闭Tomcat时,执行关闭 */ @Override public void destroy() { } }
生命周期:
- 被创建——init
- 被执行——service
- 被销毁 ——destroy
被创建——初始化配置 (饿汉模式 正数 懒汉模式 负数)默认第一次访问创建。
Servlet只存在一个对象,是单例的,多线程访问出现安全问题。
解决:不要定义成员变量,尽量用局部变量。——定义成员变量,不赋值,就不会更改值。
被执行——提供服务
被销毁——正常关闭执行,销毁之前执行。
非正常关闭不会执行
Servlet 3.0 之后支持注解配置 不需要web.xml
和上面一样,新建包新建类,加注解
注解属性 urlPatterns 路径 value和他一样的效果,所以可以不写urlPatterns=“/demo1”
写成“/demo1”也可以。
可定义多个访问路径,因为源代码中参数时数组。
定义规则:
/xx
/xx/xx 两层路径都得写全。
/*.do *表示都可以访问, 这表示.do结尾的都可访问。 什么结尾自己定义。
IDEA 和Tomcat
1、IDEA会为每一个项目布置一个单独的配置文件:
Using CATALINA_BASE: "C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_maven-webapp-tomcat"
![]()
上面路径的文件夹下就是tomcat 的配置文件,可自己更改东西。
IDEA更改:
![]()
![]()
2、工作空间 和 Tomcat部署的空间
Tomcat 真正访问的是Tomcat部署的项目, tomcat部署的web项目对应着工作空间项目的web目录下的所有资源(注意在web—inf下就不能访问)。
3、断点调试
使用DEBUG启动,测试每个方法
![]()
servlet的体系结构
Servlet的实现类 —— GenericServler——的继承类 HttpServlet
因为不经常使用Servlet接口的其他4个方法,所以GenericServler类对这4个方法进行了空实现。
![]()
所以继承实现类只需要重写一个service方法
![]()
(其与方法看自己写不写)
HttpServlet的出现
因为service要在方法中判断请求方式 get post 其他等 再去获取数据。
![]()
为了重写的时候不用再对service里面的的判断做改变。
service里面对请求方式做了判断 ,对应哪种就调用哪种,具体的业务步骤交给doGet doPost 等7种方法去执行。
![]()
意义:对Http协议的封装。
当我们在定义自己的servlet接口时
不用再重写service方法,只需要重写doGet doPost 等七个方法。
![]()
servlet的相关配置:除了xml
注解配置
urlpartten:内部是一个数组, 就是说@webServlet可以配置多个路径
表示当前类可以使用多个路径 访问
路径定义规则:
/xxx 指定路径/xxx/xxx 指定多层路径
/* 随意路径
*.jpg(文件名 直接访问文件名) 访问静态文件的路径写法。
优先级:*最低 会优先匹配最准确的