1.端口被占用:BindeException
* 方式一:
找到占用的端口号,并且找到对应的进程,关闭该进程
* cmd -> netstat -ano
找到对应的PID,启动任务管理系统,找对应的PDID
* 方式二:修改自身的端口号
* conf -> server.xml
修改配置文件信息 -> <connector> 修改端口号
_______________________________________________
2.将项目部署到Tomcat服务器中的方式:
1)方式一:
直接将项目放到webapps目录下.
*优化 -> 将项目打包成 war文件
将war文件直接放在webapps目录下,该文件会自动解压
2)方式二: 配置conf -> server.xml文件
<Host>标签中设置
<Host>
<Context docbase="本地项目真实路径" path ="虚拟目录"/>
</Host>
3)方式三: conf->Catalina -> localhost -> 在localhost下创建任意名称的xml文件.
在xml文件中编写:
<Context docbase="本地项目真实路径"/>
虚拟目录: xml文件的名称
_________________________________________
3.web应用的目录结构 (完整结构)
|-应用的根目录
|-web静态资源
包含:html/css/js/图片...
|-WEB-INF - [受保护的,不可见,客户端不能直接访问的]
|-web.xml :web应用的核心配置文件
[针对的是:当前的web应用]
|-lib: 放jar包
[mysql,c3p0]
|-classes:放置字节码文件的目录
类路径 - src源码编译过来
|-MATE-INF - 元信息
__________________________________________
4.web工程的目录结构
|-src: java源代码
|-web: web应用的根目录
|-WEB-INF
|-web.xml: web应用的核心配置文件
|-lib: 放置依赖的jar包
|- index.jsp (静态资源)
_________________________________________
让web服务器访问到我们写的文件 -> javaEE规范
Servlet: server applet
1.概念:运行在服务器端的小程序
* servlet就是一个接口,定义了java类被浏览器访问到(tomcat所识别)的规则.
* 自定义一个类,实现Servlet接口,重写方法.
2.使用Servlet的步骤:
1).创建javaee项目
2).定义一个类,实现Servlet接口
3).实现接口中的抽象方法
4).配置Servlet
在web.xml中配置:
<servlet>
<!--给Servlet起的名字:随意-->
<servlet-name>ServletDemo01</servlet-name>
<!--servlet的类对应的完整类名-->
<servlet-class>web.b_servlet.ServletDemo01</servlet-class>
</servlet>
<servlet-mapping>
<!--名字必须和servlet-name的一致-->
<servlet-name>ServletDemo01</servlet-name>
<!--访问的资源路径:随意-->
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
3.Servlet的执行过程:
1).当服务器接收到浏览器的请求后,会进行解析URL路径,获取到访问的Servlet的资源路径
2).查找web.xml文件,是否有对应的<url-pattern>的标签体内容
3).如果有,则找到对应的<servlet-calss>全类名
4).tomcat会将字节码文件加载到内存中,并且创建对应的对象
5).调用该对象的service()
4.Servlet的实现原理:
看图
5.Servlet的生命周期:
1)被创建: 执行init(),只执行一次
Servlet什么时候会被创建?
* 默认情况: 第一次访问时,Servlet被创建
* 可以在配置web.xml文件中设置
* <servlet>中设置 * 第一次被访问时创建
<load-on-startup> 的值为负数
* 在服务器启动时创建
<load-on-startup> 的值为0或者正整数
2)提供服务:执行service(),执行多次
说明servlet在内存中只有一个对象,servlet是单例
3)被销毁: 执行distroy(),只执行一次
* 服务器被关闭时,servlet被销毁
* 只有服务器在正常关闭时,才会执行distroy()
6.HttpServlet模板
Servlet的体系结构:
Servlet -- 接口
|- GenericServlet -- 抽象类
|- HttpServlet -- 抽象类
* 实现service(),将请求和响应转换后 -> this.service() ->做相应的请求方式判断,从而决定调用的是doPost()/doGet()
* GenericServlet:将servlet接口中其他方法都做了默认空实现,只将service()作为抽象方法使用