Tomcat与Servlet使用

本文详细介绍了Tomcat的启动、关闭、部署项目以及集成到IDEA的过程,深入讲解了Servlet的概念、执行原理、方法、Servlet3.0的注解配置,以及HTTP请求和响应的结构。同时,探讨了Cookie和Session的实现与区别,还涵盖了Filter过滤器和Listener监听器在web开发中的作用。最后,简述了MVC开发模式及其在Java web开发中的应用。
摘要由CSDN通过智能技术生成

1. Tomcat:

默认端口localhost:8080 ipv4可以省略的端口为80
一闪而过问题:没有正确配置JAVA_HOME环境变量

启动报错
  • 找到占用8080的进程,结束它 netstat -ano
  • 修改自身端口 conf目录下的sever.xml 找其中的port改主端口号
关闭
  • 强制:点启动的红×
  • 正常:调用shutdowm.bat ctrl+c
部署项目
1.直接将项目放到apps目录下即可
	以虚拟目录访问
	简单部署:将项目打成war包,再将war包放置到apps目录下。war包会自动解压缩,删除时会自动删除
2.配置conf/sever.xml
	在Host标签体中:<context docBase="实际路径" path="虚拟路径" />
3.在conf\catalina\localhost创建任意名称的xml文件。
	在文件中编写<context docBase="实际路径" />    项目的虚拟目录就是文件的名称
java动态项目的目录结构
项目的根目录
	-WEB-INF目录:
		-web.xml:web项目的核心配置文件
		-classes目录:放置字节码文件的目录
		-lib目录:放置依赖的jar包
将Tomcat集成到idea中,并且创建JavaEE的项目并部署项目

2. Servlet

servlet:运行在服务器端的小程序,就是一个接口,定义了java类被浏览器访问到(Tomcat)的规则
将来我们自己实现一个类,实现Servlet接口,复写方法。

快速入门
  1. 创建javaEE项目
  2. 定义一个类,实现Servlet接口
  3. 实现接口中的抽象方法
  4. 配置Servlet
	    <!--配置Servlet -->
	    <servlet>
	        <servlet-name>demo1</servlet-name>
	        <servlet-class>cn.lixiang.web.servlet.ServletDemo1</servlet-class>
	    </servlet>
	
	    <servlet-mapping>
	        <servlet-name>demo1</servlet-name>
	        <url-pattern>/demo1</url-pattern>
	    </servlet-mapping>
执行原理
  1. 当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
  2. 查找web.xml文件,是否有对应的标签体内容
  3. 如果有,则在找到对应的全类名
  4. Tomcat会将字节码文件加载进内存,并且创建其对象
  5. 调用其方法
Servlet的方法
    被创建:init初始化方法,在Servlet被创建是执行,只会执行一次,说明在内存中只存在一个实例化的Servlet对象
        默认情况下第一次被访问时被创建
            可以指定Servlet的创建时间
    提供服务:service提供服务的方法,每一次servlet被访问时都执行。执行多次
    被销毁:destroy销毁方法,在Servlet,服务器被 正常 关闭前执行

    指定Servlet的创建时间(在Servlet标签下配置)
        1.第一次被访问时创建:<load-on-startup>负数(默认-1)</load-on-startup>

        2.在服务器启动时创建:<load-on-startup>0或正数</load-on-startup>

   内存中只存在一个实例化的Servlet对象
        多线程访问时安全问题:解决方案:尽量不在Servlet中定义成员变量,即使定义了,也不要赋值;
Servlet3.0

好处:支持注解配置,不需要web.xml了
步骤:

  1. 创建javaEE项目,选Servlet3.0以上,可不创建web.xml
  2. 定义一个类实现Servlet接口
  3. 复写方法
  4. 在类上使用@webServlet注解进行配置:@WebServlet(urlPatterns = "/Servlet资源路径")
    简便写法:@WebServlet("/Servlet资源路径")
    一个Servlet可以定义多个访问路径 @WebServlet({"/d4","/dd4","/ddd4"})
Servlet体系结构
    Servlet--接口
        实现类:
            -GenericServlet --抽象类  将Servlet接口中其他方法做了默认空实现,只将service()方法作为抽象,继承后只需实现service()方法
            -HTTPServlet    --抽象类  对Http协议的封装,简化操作
                                        1. 定义类继承HTTPServlet
                                        2. 需要重写doGet、doPost方法
@WebServlet({
   "/demo3","/d3","/de3"})
public class myservlet3 extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        System.out.println("do Get....");

        //获取数据msg
        ServletContext servletContext= this.getServletContext();
        String msg= (String) servletContext.getAttribute("msg"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值