Spring集成web环境、springMVC

目录

1、spring集成web环境

 2、springMVC

1、 springMVC开发步骤:

2、springmvc的执行流程 ​编辑

 3、springMVC组件解析

1、注解解析

 2、spring-mvc.xml文件配置解析


1、spring集成web环境

1、存在问题

解决办法:用监听器

自己解决问题步骤:创建一个类实现ServletContextListener接口,服务器一启动,ContextLoaderListener一监听到启动了,就会执行contextInitialized这个初始化方法,在初始方法内部就可以把把创建出来的spring引用上下文对象app放到最大的域ServletContext域中,让web层可以拿到这个对象,同时还需要在web.xml中配置,把这个监听器进行配置,不然tomcat不知道有这玩意,即要告诉tomcat,去web.xml配。同时也可以在web.xml中设置全局参数,这样就不需要在Java代码中定死"applicationContext.xml",做到解耦合。

public class ContextLoaderListener implements ServletContextListener {
//服务器一启动,ContextLoaderListener一监听到启动了,就会执行下面这个初始化方法
    public void contextInitialized(ServletContextEvent sce) {
        //获取ServletContext域
        ServletContext servletContext = sce.getServletContext();
        //读取web.xml中的全局参数
        String contextConfigLocation = servletContext.getInitParameter("ContextConfigLocation");
        ApplicationContext app = new ClassPathXmlApplicationContext(contextConfigLocation);
        //把创建出来的spring引用上下文对象app放到最大的域ServletContext域中,让web层可以拿到这个对象
        servletContext.setAttribute("app",app);
        System.out.println("创建完毕");
        //接下来需要把这个监听器进行配置,不然tomcat不知道有这玩意,即要告诉tomcat,去web.xml配
    }
<!--    全局初始化参数-->
    <context-param>
        <param-name>ContextConfigLocation</param-name>
        <param-value>applicationContext.xml</param-value>
    </context-param>
<!--    设置application域的监听器-->
    <listener>
        <listener-class>com.gdut.listener.ContextLoaderListener</listener-class>
    </listener>

spring提供了获取应用上下文的工具

 所以实际开发中我们只需要坐两件事:

步骤:

在web.xml配置ContextLoaderLisener监听器以及全局参数(放的是applicationContext.xml的路径)

<!--    全局初始化参数-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

在web层的Java代码中使用WebApplicationContextUtils类的getWebApplicationContext方法获得应用上下文

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
        userService userService = app.getBean(com.gdut.service.userService.class);
        userService.save();
    }

 spring实现的监听器其实是完成了我们自己手动写的步骤,总的来看就是spring提供了一个一个实现了servlet域的监听器,把这个监听器配置进web.xml中,并且把applicationContext.xml的路径作为全局参数,参数名为contextConfigLocation配置进web.xml,spring提供的监听器实现类就能在项目初始化的时候将其加载进全局域,并通过WebApplicationContextUtils类的getWebApplicationContext获得全局域中的应用上下文文件。

 2、springMVC

springMvc雏形

1、 springMVC开发步骤:

1、导入springMVC包(在pom.xml里面注入依赖)

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>

2、配置servlet(在web.xml中配置前端控制器,让访问的时候触发该控制器)

<!--配置springMVC的前端控制器-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        这个init-param标签是给DispatcherServlet类里面属性contextConfigLocation
赋默认值,让前端控制器能加载配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

3、编写POJO(Javabean——控制器controller)

4、使用注解将controller配置到spring容器当中(@conroller、@component),要放在springMVC的配置文件spring-mvc.xml中

@Controller
public class userController {
    //这个注解的意思是访问的是/quick是就自动映射到这个save方法,执行对应的逻辑,最后返回一个"success.jsp",跳到webapp的对应jsp中
    @RequestMapping("/quick")
    public String save(){
        System.out.println("controller save running");
        //这里return的是字符串,前端控制器收到返回的字符串之后找到对应的动作进行响应
        return "success.jsp";
    }
}

5、配置spring-mvc.xml(组件扫描)

<!--    组件扫描-->
    <context:component-scan base-package="com.gdut.controller"/>

6、测试

2、springmvc的执行流程 

 

 

 3、springMVC组件解析

1、注解解析

 2、spring-mvc.xml文件配置解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值