Listener监听器入门、手工整合Spring到自己的Servlet中、Maven打包依赖

本文详细介绍如何将Spring框架整合到自定义的Servlet中。包括配置Spring依赖、创建配置文件、实现监听器类以及在Servlet中获取Bean等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前面已经学习了:自己写Servlet,自己写Filter。
现在学习:自己写Listener。套路其实都一样的(继承接口、重写方法;在web.xml中配置一下)。

web.xml中加入:

    <listener>
        <listener-class>com.mydev.MyListener</listener-class>
    </listener>  

这里写图片描述
(新建的几个文件,稍后会一一解释)
配置文件 web.xml 中的<listener-class> 对应其中的MyListener 类文件。

2、关于Listener不着急,下面看看如何手工整合Spring框架到我们自己写的Servlet。

使用maven下载Spring:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>

resourece项目资源目录下创建Spring框架的配置文件,比如我这里的mySpring.xml,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="myBean" class="com.mydev.MyBean">
        <constructor-arg index="0" value="0"/>
        <constructor-arg index="1" value="jack"/>
    </bean>

</beans>

我们配置了一个<bean>

这个<bean对应的是MyBean这个类,代码如下:


public class MyBean {
    private int id;
    private String name;


    public MyBean(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

3、完成MyListener这个监听器类

import org.springframework.context.support.ClassPathXmlApplicationContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent servletContextEvent) {
        // 使用配置文件的方式
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("mySpring.xml");

        //  设置一个属性
        servletContextEvent.getServletContext().setAttribute("spring",classPathXmlApplicationContext);
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

读取我们的Spring框架配置文件,然后设置了一个名为spring的属性。

4、然后在自己写的Servlet里,获取监听器里设置的属性,然后获取 Bean。

MyServlet.java代码如下:

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取监听器里设置的属性
        ClassPathXmlApplicationContext classPathXmlApplicationContext = (ClassPathXmlApplicationContext)req.getServletContext().getAttribute("spring");
        // 获取Bean
        MyBean myBean = classPathXmlApplicationContext.getBean("myBean",com.mydev.MyBean.class);


        // 把从Bean获取的值输出
        resp.getWriter().write(myBean.getName());
    }
}

从代码可以看出,请求之后,会输出MyBean类里的name属性的值。
这个name属性值,是在配置文件mySpring里配置好的。

4、到了这一步,以为编译一下,然后把编译之后的target目录下的classes文件夹复制到我们的tomcat站点里就可以了。其实还没有完,因为我们还要外部依赖(我们使用了Spring这个框架),我们需要使用maven把依赖打包一下。

使用maven打包依赖,需要一个插件,还是在pom.xml写上,先下载这个插件:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

然后进入项目根目录,执行:

 mvn package

这里写图片描述
我们把需要的依赖都打包到了lib 这个文件夹里。

5、把target目录下的classeslib 复制到 站点下:
这里写图片描述
(这一切搞定之后,我们开始测试,记得重启tomcat)

访问http://localhost:8080/myjavaweb/1.abc
经过Filter,然后到达Servlet。

会触发doGet()方法,在这个方法中,最后向页面输出Bean组件的属性(name属性)的值。

    <bean id="myBean" class="com.mydev.MyBean">
        <constructor-arg index="0" value="0"/>
        <constructor-arg index="1" value="jack"/>
    </bean>

这是Spring配置文件里,给MyBean属性配置的值。

我们用浏览器查看:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值