Spring笔记(4)

Spring笔记(4)

集成Web环境

1.步骤

  1. 导入Spring-web坐标

    <!--    spring-web-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>5.0.5.RELEASE</version>
        </dependency>
    
  2. 将ApplicationContext.xml的文件名称存入web.xml的全局参数中

    <!--  全局初始化参数-->
    <!--applicationContext文件名-->
    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    
  3. 配置监听器

    <!--  配置监听器-->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
  4. 编写Servlet

  5. 使用WebApplicationContextUtils获取ApplicationContext(获取的为子类WebApp..)

    //获取app对象(使用工具包中的方法)
    ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    

2.pom.xml

<!--    servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
<!--    servlet-jsp-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.2.1</version>
      <scope>provided</scope>
    </dependency>
<!--    spring-context-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
<!--    jdbc-druid-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>
<!--    jdbc-c3p0-->
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>
<!--    spring-web-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>

3.servlet具体实现

3.1工具包实现:(封装好的)

  • ​ servlet中的app通过工具包中的方法获得()
  • ​ 在servletContext域中获得app对象
  • ​ 域中app对象在监听器模块内部实现存储
public class ApplicationContextLoaderUtil {
    public static ApplicationContext getApplicationContext(ServletContext servletContext){
        //在域中获取applicationContext对象
        ApplicationContext app = (ApplicationContext) servletContext.getAttribute("app");
        //测试
        System.out.println("通过工具类获取app");
        return app;
    }
}

3.2监听器实现(封装好的)

手动配置(web.xml中)

<!--  全局初始化参数-->
  <!--applicationContext文件名-->
  <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>

内部封装好

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //在servletContext中获取ApplicationContext对象
    //获取servletContext
    ServletContext servletContext = request.getServletContext();
    //获取app对象(使用工具包中的方法)
    ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    //获取userService
    UserService userService = app.getBean(UserService.class);
    userService.save();

4.注意

配置pom.xml时:

servlet-api和servlet-jsp-api时应该加入范围

<scope>provided</scope>

applicationContext.xml中:

添加扫描注解

<context:component-scan base-package="dao"/>
<context:component-scan base-package="service"/>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115198.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月11日 下午10:34
下一篇 2021年11月11日 下午10:34


相关推荐

  • VBA InStr 函数

    VBA InStr 函数InStr 函数 函数 VisualBasicf 返回一个 Variant Long 值 指定一个字符串在另一个字符串中首次出现的位置 语法 InStr start string1 string2 compare InStr 函数语法有以下参数 Part 说明 sta

    2025年11月6日
    4
  • Unicdoe【真正的完整码表】对照表(二)汉字Unicode表

    Unicdoe【真正的完整码表】对照表(二)汉字Unicode表注意 下面这两段是代理区 即第 1 16 平面的间接表示 四个字节的汉字就在这里表示 D800 DBFF High halfzoneofUT 16DC00 DFFF Low halfzoneofUT 16 本篇中包含了所有常用汉字 27973 个 剩余汉字使用代理区标识欢迎查看字符编码相关博客专栏比如 由 iPhoneemoji 问题牵出的 UTF 16 编码 UTF 8 编码探究

    2026年3月20日
    2
  • php allow_url_include,allow_url_include的应用和解释

    php allow_url_include,allow_url_include的应用和解释PHP常常因为它可能允许URLS被导入和执行语句被人们指责。事实上,这件事情并不是很让人感到惊奇,因为这是导致称为RemoteURLIncludevulnerabilities的php应用程序漏洞的最重要的原因之一。因为这个原因,许多安全研究人员建议在php.ini配置中禁用指向allow_url_fopen。不幸的是,许多推荐这种方法的人,并没有意识到,这样会破坏很多的应用并且并不能保证1…

    2022年7月21日
    13
  • NR 5G 组网(NSA和SA)

    NR 5G 组网(NSA和SA)NSA 非独立组网 和 SA 独立组网 5G 的网络架构 5G 网络架构的选项基本说明 5G 网络架构的选项分为独立组网和非独立组网两组 其中选项 1 2 5 6 是独立组网 选项 3 4 7 8 是非独立组网 非独立组网的选项 3 4 7 还有不同的子选项 在这些选项中 选项 1 早已在 4G 结构中实现 选项 6 和选项 8 仅是理论存在的部署场景 不具有实际部署价值 标准中不予考虑 5G 独立组网 SA 选项 1 图示连

    2026年3月20日
    2
  • 纠结应该先学Python还是Java?看完就有数了

    纠结应该先学Python还是Java?看完就有数了准备学习编程前,你一定会打开电脑搜索一下“先学Python还是先学Java?”扑面而来的是海量回答。如果你问一名Java程序员,肯定会建议你先学Java,因为他们认为Python像个乳臭未干的黄毛小子。但如果你问Python程序员,可能会得到一个完全相反的答案,他们认为Java是刻板啰嗦的老大爷,而人生苦短,我用Python。但别担心,今天我们将会从语言特色学习曲线职业方向市场需求…

    2022年7月8日
    22
  • javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题(window10)

    javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题(window10)描述:打开cmd,输入java,java-version没有问题,但是javac提示不是内部命令问题排查: 找到java安装下的bin目录,运行cmd,输入javac,能提示,说明环境配置有问题cmd输入:path看看java相关的java相关路径有没有多余的符号,比如多出分号,逗号(笔者上面是正确的路径展示形式)看看下载的解压后java目录对不对…

    2022年4月30日
    90

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号