
上两节课学到过 老外为了方便容器(tomcat)和程序之间交互,制定了一系列接口和相关规范 其中 java servlet 是有不同的版本规范的 在网上可以下载查看英文文档
规范里面包含了接口 过滤器 以及 session response等对象
这节课我们学下监听器(Listener)
可以使用监听器

改变上面几个对象的状态 可以通过自己写代码来完成监听的过程
这节课一servletContext为例 实现以下监听器监听的过程
servletContext为上下文对象 也就是容器启动时 内部会置入一个对象 这个对象即为上下文对象 会一直存在我们的容器中,只要容器服务不关闭

下面看下监听器如何使用

接下来在com.jttthink包下面创建一个mylistener文件
目录如下

mylistener里面继承接口 实现方法

接下来在pom.xml中加入Spring的依赖(Core库的依赖)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.3.RELEASE</version>
</dependency>
加好之后我们就可以用扫描注解的方式加载也可以使用xml配置的方式
后面我们会使用传统配置的方式配spring mvc
所以这节课我们也使用配置文件演示
在resource文件夹下创建myspring.xml文件

这里选择第二个 只要加入依赖 idea会自动出现第二个配置文件
如下图

后面我们会将如何将myspring.xml 和web.xml文件进行关联
接下来在myspring.xml中加入一个bean

然后再com.jtthink包下面创建一个mybean.java实体
目录如下

里面有id和username字段
生成构造函数 和get set方法
代码如下

将myspring.xml中加入的bean起个id名和创建的实体类名一致
然后需要在bean上标明class 包存在哪

加上class可以发现编译器报错了
是因为bean里面需要设置一下构造函数 如下

其中index代表参数 0表示例子中的id 1表示username
value代表值
这个bean如果要在程序中获取到 实际上需要好几部过程 这个过程由spring mvc帮我们封装好了
如果我们想手工写 也是可以的 创建一个自定义对象就可以了
接下来来到mylistener

接下来来到myservlet
在这里获取刚刚设置的属性值

写完代码我们编译一下项目
编译完成后target目录中出现了我们写的bean的配置文件(可以发现将我们的配置文件编译到target目录下了)

这就是为什么我们能在mylistener中直接获取到myspring.xml文件

因为我们这节课用到了spring的一些配置 是通过maven配置的方式加载的
我们编译好项目后 classes目录下是没有这些maven依赖文件的
在程序调用spring的一些相关类库时 会出现一些问题
所以我们需要将maven依赖打包 放到tomcat目录下
怎么打包maven的依赖呢
我们可以手工将jar包拷贝到WEB-INF的classes下面
这样太麻烦了 所有我们可以借助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>
插件的大致用法 就是讲maven所需的依赖拷贝到指定的目录下 这里为编译后的lib下面
lib定义的会自动创建
接下来再次编译项目
看下target目录

可以发现没什么变化
接下来把classes目录放到WEB-INF下面

启动tomcat
浏览器输入localhost:8080/abcabc.do

说明了maven的依赖并没有被打包进来
接下来我们需要用到之前学过的maven 打包知识
来到项目目录
打开cmd
在idea项目目录 右键 copy path
在cmd 中 cd 粘贴进入项目所在目录
输入mvn package

如果maven正确的安装和配置了 则会进行所需依赖打包
会发现下载了一系列jar包

这时来到项目目录target下面

可以看见出现了lib文件夹 里面存放了maven的依赖
接下来将lib复制到WEB-INF下面
如下

在web.xml中加入监听器配置

重启tomcat
再次访问localhost:8080/myweb/abcabc.do

可以发现页面能够正常访问了
其中的bhc_bean是我们的IOC容器里面的bean获取到的值
以上就是我们手工整合的过程
网友评论