Tomcat的启动问题
下载:http://tomcat.apache.org/
安装:解压即可使用,不需要安装
启动:双击bin/startup.bat就可以启动,启动的黑窗口不能关闭
访问自己:http://localhost:8080
访问别人:http://别人ip地址:8080
卸载:直接删除解压的文件夹即可
正常关闭tomcat:
1.双击bin/shutdown.bat
2.ctrl+c也是正常关闭
tomcat的启动问题:启动黑窗口一闪而过
问题1:JAVA_HOME环境变量没有配置
解决:正确配置JAVA_HOME环境变量
问题2:tomcat端口号冲突,一般是启动了多个tomcat服务器
在logs目录中查看日志信息:Caused by: java.net.BindException: Address already in use: bind表示端口号冲突。
解决:
1.在cmd窗口查看所有进程的端口号:netstat -ano,找到8080端口号对应进程的pid;
2.在任务管理器中根据pid找到该进程,结束掉之前启动的tomcat进程
项目的3种发布方式
- 3种发布方式
1. 直接将项目放到webapps目录下即可。(掌握这个就可以了)
* /hello:项目的访问路径-->虚拟目录
* 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。
* war包会自动解压缩
2. 配置conf/server.xml文件的<Host>标签体中配置
<Context docBase="D:\hello" path="/hehe" />
* docBase:项目存放的路径
* path:虚拟目录
3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写:
<Context docBase="D:\hello" />
* 虚拟目录:xml文件的名称,不带后缀名。
说明:idea编辑器采用的是该方式
- 访问路径解析
Servlet概述以及实现思路
- Servlet的概念和作用
servlet 是运行在 Web 服务器中的小型 Java 程序,本质是一个接口。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。- 实现一个Servlet的步骤
1.定义一个类实现Servlet接口,重写抽象方法;
public class ServletDemo1 implements Servlet{
}
2.配置这个Servlet
2.1 在web.xml中配置Servlet(了解)
<!--配置servlet的类信息-->
<servlet>
<!--Servlet的名称-->
<servlet-name>ServletDemo1</servlet-name>
<!--servlet的全类名-->
<servlet-class>com.itheima.web.servlet.ServletDemo1</servlet-class>
</servlet>
<!--配置servlet的映射信息,也就是访问路径和servlet类的对应关系-->
<servlet-mapping>
<!--Servlet的名称,和上面保持一致-->
<servlet-name>ServletDemo1</servlet-name>
<!--Servlet的访问路径-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2.2 使用注解配置Servlet(吐血推荐)
//当注解的参数有且仅有一个,而且参数名叫value时,value可以省略不写
@WebServlet("/demo1")
public class ServletDemo1 implements Servlet{}
Servlet生命周期
- 描述Servlet生命周期
思路:三个方法分别是什么时候被调用的?调用几次?作用分别是什么?
当我们第一次访问Servlet时,服务器会创建Servlet对象,调用init()方法初始化,该方法只调用一次,可以用来加载配置文件;每当我们访问Servelt时,service()方法都会被调用,访问一次就调用一次,用来接收客户端请求以及对客户端作出响应;服务器正常关闭的时候销毁Servlet对象,destory()方法会被调用,调用一次,一般在该方法中释放资源; - 配置启动时加载
在web.xml中的<Servlet>标签中配置<load-on-startup>2</load-on-startup>,值越小优先级越高;
访问路径问题
1. 完全路径匹配:以/开头,不包含通配符* 例如:/servletDemo1 /demo1 /abc /aaa/bbb /abc.do (常用)
2. 目录匹配:以/开头,以*结尾;在浏览器访问时*表示任意字符 例如:/abc/* /*
3. 扩展名匹配:以*开头,以固定的后缀名结尾 例如 *.jsp *.abc 但是/abc/*.do错误
HTTP协议
- 概念:http协议规定的是客户端和服务器之间通信的规则;
- 特点:http协议是基于请求和响应;一定是先有请求后有响应,一次请求对应一次响应;
- 请求部分:分4个部分
请求行:
请求方式 url路径 协议/版本
POST /day14/servletDemo5 HTTP/1.1
请求头:一般是一个key对应一个value,也有一个key对应多个value;
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
告诉服务器浏览器的版本信息,一般用来解决浏览器兼容性问题;
Referer: http://localhost:8080/day14/login.html
告诉浏览器当前请求的来源,用于防盗链以及统计工作;
请求空行:用于分隔请求头和请求体
请求体:只有post请求才有请求体,get请求没有,post请求参数就在请求体中
username=zhaoying