静态web:html、css等数据不会变化的东西
动态web:所有网站、动态变化的会发生变化的数据:servlet、jsp等
1.IP 电子设备在网络中的唯一标识
2.端口 应用程序在计算机中的唯一标识
3.传输协议 规定了数据通信的规则
基础协议:
tcp: 安全协议 ,三次握手 (速度较慢)
udp: 不安全协议 (速度较快)
服务器:安装了服务器软件的计算机
服务器软件:接收用户的请求,处理请求,做出响应
web服务器软件:接收用户的请求,处理请求,做出响应
在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
常见的java相关的web服务器软件:
c/s: 客户端/服务器端
B/S:浏览器/服务器端
weblogic: oracle公司,大型的 JavaEE服务器,支持所有的 JavaEE规范,收费的。
websphere:IBM公司,大型的] avaIL服务器,支持所有的] ovaTE规范,收费的。
JB0SS:JB0SS公司的,大型的 JavaEE服务器,支持所有的] avaIL规范,收费的。
Tomcat: Apache基金组织,中小型的] javaEE服务器。开源的,免费的。
1.下载:http://tomcat.apacheorg
2.安装:解压压缩包即可
注意:安装目录建议不要有中文和空格
3.卸载:删除目录就行了
4.启动:
bin/ startup.bat,双击运行该文件即可
访问:浏览器输入:http://localhost:8080回车访问
5.关闭:直接关闭窗口
1.黑窗口一闪而过:
原因:没有正确配置 JAVA_HOME环境变量
解决方案:正确配置 JAVA_HOME环境变量
2.居动报错:
找到占用的端口号,并且找到对应的进程,杀死该进程
netstat -ano
修改自身的端口号
conf/server.xml
80端口号是http协议的默认端口号。
好处:在访问时,就不用输入端口号
例子:
访问静态资源
在webapps上建立一个资源文件夹,并放置好打开网站输入——>locallhost(端口号)/文件夹名/文件名
如何建立一个web项目
1、正常建立一个Java项目
2、点击项目右击:添加框架支持——>勾选Web应用程序——>会默认生成web文件夹及其相关文件(jsp等)——>添加运行配置——>添加tomcat本地——>选择tomcat路径——>添加项目部署——>输入相关网页代码——>点击右下角运行
java动态项目的目录结构
项目的根目录
WEB-INF目录:web.xml:web项目的核心配置文件
classes目录:放置字节码文件的目录
lib目录:放依赖的jar包
建立一个servlet项目
1、建立一个web项目
2、导入外部tomcat的lib包
3、建立public class MyServlet implements Servlet
4、构建来自分装好的库框架
package com.zhujiantao;
import jakarta.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("myservlet init");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("MyS");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
解析:
init:Servlet初始化时调用的方法 getServletConfig:获取当前Servlet的配置信息 service:调用Servlet真正去处理逻辑的方法 getServletInfo:它提供有关Servlet的信息,如作者、版本、版权 destroy:Servlet销毁时调用的方法
5、配置映射:在web.xml加上以下代码
MyServlet
com.caochenlei.servlet.demo.MyServlet
MyServlet
/MyServlet
servlet标签用于配置Servlet的基本信息
servlet-class:代表当前Servlet的具体类路径,注意最后不包含.java servlet-name:代表当前Servlet的别名,可以和原Servlet名称一样,也可以不一样,一般我们就一样就行了 servlet-mapping标签用于配置请求路径与具体处理Servlet的对应关系
url-pattern:这里写你要匹配的地址路径 servlet-name:如果匹配到请求,该交给哪一个Servlet处理,这里的servlet-name其实就是一个Servlet的别名
6、启动程序,将
状态代码200表示成功
其中一般实现功能代码都写入service内
1.当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的servelt的资源路径 2.查找web.xml文件,判断是否有对应的标签体内容。 3.如果有,则在找到对应的 全类名 4.tomcat会将字节码文件加进内存,并且创建其对象 5.调用其方法
1.被创建:执init方法,只执行一次
Servlet什么时候被创建?
默认快况下,第一次被访问时, Servlet被创建
可以配置执行 Servlet的创建时机,在(
第一次被访问时,创建
在服务器后动时,创建
注意点:
init只执行一次,说明servlet是一个单例对象。
2.提供服务:执行 service方法,执行多次
每次访问servlet时,service都会被调用一次
3.被销毁:执行 destroy方法,只执行一次
只有服务器正常关闭时,才会执行这个destroy方法。
destroy方法在servlet被销毁之前执行,一般用于释放资源
总的来说就是:
类加载和实例化
初始化:init()
请求处理:service()
销毁:destroy()
支持注解配置,可以不需要配置web.xml了。
@WebServlet("/资源路径");
如果注解只有一个属性,那么肯定是赋值给该属性。
如果注解有多个属性,而且前提是这多个属性都有默认值,那么你不写注解名赋值,会赋值给名字为“value”这属性。
如果注解有多个属性,其中有没有设置默认值的属性,那么当你不写属性名进行赋值的时候,是会报错的。
@WebServlet({"/demo1","/demo2","/demo3"});
@WebServlet("/usr/demo4");
@WebServlet("/usr/*");
@WebServlet("/*");
@WebServlet("*.do");
匹配⽅法只有三种
全路径匹配:/a
前半段匹配:/a/b/c/*
扩展名匹配:*.action
1、创建类(com.caochenlei.servlet.demo.MyHttpServlet),并且需要继承HttpServlet实现doPost、doGet方法。
package com.zhujiantao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyHttpServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost method invoke ...");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doGet method invoke ...");
}
}
2、配置映射(在web.xml文件中新增以下代码
MyHttpServlet
com.caochenlei.servlet.demo.MyHttpServlet
MyHttpServlet
/MyHttpServlet
3、运行,在地址后面加上/MyHttpServlet