概念
软件架构方式
C/S(Client Server)客户端&服务端
特点:使用必须安装客户端
B/S:(Browser Server) 浏览器&服务器
特点:可移植性强
资源分类
-
静态资源:用户访问得到的结果一致(HTML、CSS、图片)
-
动态资源:用户访问结果可能不一致(JSP、PHP)
浏览器不能打开动态资源,只能直接访问静态资源。
如果访问动态资源,要通过WEB服务器将动态资源转为静态资源
TOMCAT配置
基本使用
1、安装:解压即可
2、目录介绍
3、开启tomcat
4、配置:
配置端口:(conf / server.xml)- 第69行
port值统一改为80(HTTP协议默认的端口是80)
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
常见问题:启动startup.bat一闪而过
原因:没有正确配置JAVA_HOME
Eclipse集成TOMCAT
1、在other中搜索server
2、添加tomcat(对应Tomcat版本)
WEB项目
创建web项目
webcontent内创建HTML文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
hello web
</body>
</html>
项目部署
将需要部署的项目放在tomcat中(放在右边)
右键服务器---start--启动服务器
访问项目
WEB项目基于HTTP协议的:http://IP地址:端口/项目名/资源路径
Servlet
本质就是一套接口,规定Java类能被Web服务器所识别的规范。我们编写WEB应用必须实现Servlet接口。
创建Servlet
1、创建WEB项目
2、自定义类实现Servlet接口
public class MyFristServlet implements Servlet{
@Override
public void destroy() {}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {}
@Override // 用于处理请求
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service被调用");
}
}
3、配置Servlet(web.xml)
<!-- 配置一个Servlet -->
<servlet>
<!-- Servlet起名 -->
<servlet-name>hello</servlet-name>
<!-- Servlet位置 -->
<servlet-class>com.xxx.controller.MyFristServlet</servlet-class>
</servlet>
<!-- 配置servlet访问路径 -->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
4、访问页面地址,启动WEB服务器
执行原理
1、tomcat启动时,扫描部署项目
2、扫描到WEB项目,会读取配置文件,根据配置文件做操作
<servlet>
<!-- 给Servlet起名字 -->
<servlet-name>hello</servlet-name>
<!-- 告诉tomcat servlet位置(全类名) -->
<servlet-class>com.xxx.controller.MyFristServlet</servlet-class>
</servlet>
3、根据上面配置自动创建对应class的对象
<!-- 配置servlet的访问路径 -->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
4、根据上述配置规定对象的访问路径为/hello
5、浏览器输入:http://localhost/01-web-hello/hello
通过http://localost:80 找到当前机器的tomcat
通过 01-web-hello 找到对应项目
通过/hello 找到自动创建的hello对象
6、tomcat会自动调用该对象的service方法对请求进行处理
servlet的生命周期
对象初始化(创建)
servlet被第一次访问时创建对象(默认,且一个servlet对象只创建一次)
可通过配置改变创建时机
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.woniuxy.controller.MyFristServlet</servlet-class>
<!-- 配置该servlet对象创建的时机 -->
<!-- 只能是整数 -->
<!-- 正数:tomcat服务器启动时创建(值越小越早) -->
<!-- 负数和0:第一次被访问的时候创建 -->
<load-on-startup>5</load-on-startup>
</servlet>
tomcat自动调用init方法
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("产生Servlet对象会调用");
}
ServletConfig对象说明
作用:存储servlet对象的配置信息
使用:配置servlet时通过<init-param>
配置键值对,封装到ServletConfig对象
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.woniuxy.controller.MyFristServlet</servlet-class>
<!-- 初始化的参数信息 -->
<init-param>
<!-- 本质就是配置键值对 -->
<param-name>test</param-name>
<param-value>testvalue</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
一旦配置,servlet对象在创建时会扫描init-param将其中K-V键值对传给init方法,通过该对象获取初始化值
// 查看value值
servletConfig.getInitParameter("test");
使用servlet
调用service方法(tomcat自动调用)
销毁servlet
调用destory方法(tomcat关闭时自动调用)完成清除对象
servlet(注解版)
//配置访问路径
@WebServlet("/test")
public class TestServlet implements Servlet{}
路径配置
注解 | 作用 |
---|---|
@WebServlet("/test") | 精准路径 |
@WebServlet("*.do") | 拦截后缀 |
@WebServlet("/user/*") | 拦截文件夹 |
HttpServlet
根据HTTP协议对Servlet接口做的一层实现,重写doget和dopost方法,根据不同的请求方式转到不同的方法上
@WebServlet("/test")
public class MyHttpServlet extends HttpServlet{
@Override //get方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
@Override //post方法
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
}