zoukankan      html  css  js  c++  java
  • 如何搭建Spring MVC 框架---Hello World

    传送门
    现在的Web框架基本都采用了MVC(model-view-Controller)设计模式,其中,ServletFilter都可以充当控制器.Spring MVC采用一个Servlet作为控制器,而Struts2则采用的Filter作为控制器.

    对于他们的区别我在这里不多赘述,可以参见这篇文章SpringMVC与Struts2区别与比较总结

    Spring MVC的搭建可以通过Java代码的方式(在《Spring 实战》一书中有详细讲解),也可以通过配置文件的方式,这里讲到的是运用配置文件的方式进行搭建.

    这是一个毫无技术含量的最简单例子

    使用工具:
    • idea
    • maven

    当然啦~如果你不想使用Maven可以直接跳过前两步

    Demo结构:

    Structure


    首先需要搭建一个Web项目

    可以参见Idea 使用 Maven 搭建 Web 项目

    添加依赖

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    

    配置classpath

    <build>
        <finalName>demo</finalName>
        <!--配置Classpath-->
        <resources>
          <resource>
            <directory>src/main/java</directory>
          </resource>
          <resource>
            <directory>src/main/resources</directory>
            <includes>
              <include>**/*xml</include>
              <include>**/*.properties</include>
            </includes>
          </resource>
        </resources>
      </build>
    

    配置web.xml

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    
      <!--spring的配置文件-->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
    
      <!--Spring MVC必须的servlet,他会帮你把Spring的配置文件到application域中-->
      <servlet>
        <servlet-name>dispatcher-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--Spring MVC的配置文件-->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>dispatcher-servlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>
    

    配置applicationContext.xml

    <context:component-scan base-package="com.geek"/>
    

    配置dispatcher-servlet.xml

    <!--启动Spring MVC的注解-->
    <mvc:annotation-driven/>
    <!--自动扫描包-->
    <context:component-scan base-package="com.geek"/>
    
    <!--视图解析器-->
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="suffix" value=".jsp"/>
    </bean>
    

    <mvc:annotation-driven/> 这句话非常关键!如果不写会导致@Controller等注解不能使用

    TestController.java

    @Controller
    public class TestController {
    
        @Autowired
        private TestService service;
    
        @RequestMapping("/test")
        public String Test(String s, HttpServletRequest request){
            service.show();
            request.setAttribute("s",s);
            return "index";//由于前面配置了视图解析器,此处会跳转到index.jsp页面
        }
    
    }
    

    在这里使用了@Controller注解,逻辑上标志着这个类是一个控制器,让编程过程中更容易理解
    其中的@RequestMapping("/test")指将这个url(localhost:8080/test)映射到此方法上,在Spring MVC中以一个方法为上下文进行拦截.

    TestService.java

    @Service
    public class TestService {
    
        public void show(){
            System.out.println("success");
        }
    
    }
    

    index.jsp

    <%@page pageEncoding="UTF-8" contentType="text/html"%>
    <html>
    <body>
    <%
        String s = (String) request.getAttribute("s");
        out.print(s!=null?s:"hello");
    %>
    </body>
    </html>
    
    

    启动服务器输入 http://localhost:8080/test?s=123456

    可以看到控制台打印success,index.jsp页面的显示由hello变为123456

    这样,Spring MVC 的一个小Demo就算完成了,当然,这里面使用了Spring的自动装配,整体上非常的简单例子,动手试试吧~

  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/yuanmiemie/p/6774043.html
Copyright © 2011-2022 走看看