zoukankan      html  css  js  c++  java
  • springMVC-入门案例

    1.需求

    三个页面,1.首页,2.跳转页面,3.继续跳转页面

    1跳转到2,2跳转到3,3再跳转回来1

    运行结果

    1.创建maven项目(idea编译器)

    NEW  -->  Project

    一路next到finish

    2.在pom.xml中添加依赖,红色字体

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.cong</groupId>
      <artifactId>springmvc-firstDemo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>springmvc-firstDemo Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- 版本控制-->
        <spring.version>5.0.2.RELEASE</spring.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>springmvc-firstDemo</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-war-plugin</artifactId>
              <version>3.2.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

    3.骨架创建的工程没有java和resources目录,右击src下的main,选择new --> directory,创建java和resources

     右击java --> make diractory as --> source root,使java文件夹成为java源码目录

    相应的,右击resources--> make diractory as --> resources root

    4.在resources下创建springmvc.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           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
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
        <!--开启注解的扫描-->
        <context:component-scan base-package="com.cong.controller"></context:component-scan>
        <!--视图解析器-->
        <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
        <!--
        开启springmvc框架注解的支持
        相当于开启了HandlerMapping,HandlerAdapter,HadnlerExceptionResolvers
        -->
        <mvc:annotation-driven></mvc:annotation-driven>
    </beans>

    5.在webapp下的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>
      <display-name>Archetype Created Web Application</display-name>
      <!-- SpringMVC的核心控制器 -->
      <servlet>
        <!--前端控制器-->
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!-- 配置servlet启动时加载对象 -->
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>

    6.在java目录下创建com.cong.controller.OneConcroller类

    package com.cong.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping(path = "/controller")
    public class OneController {
        @RequestMapping(path = "/first")
        public String firstPage(){
            System.out.println("transfer to first");
            return "firstPage";//跳转到第一个页面
        }
        @RequestMapping(path = "/second")
        public String secondPage(){
            System.out.println("transfer to second");
            return "secondPage";//从第一个页面跳转到第二个页面
        }
        @RequestMapping(path = "/index")
        public String indexPage(){
            System.out.println("transfer to index");
            return "redirect:/index.jsp";//回到首页
        }
    }

    7.修改index.xml

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <title>首页</title>
    <body>
        <h3>入门程序</h3>
        <!-- 第一种访问方式 -->
        <%--<a href="${pageContext.request.contextPath}/controller/first">点击跳转</a>--%>
        <!-- 第二种访问方式,不要在访问 URL 前面加/,否则无法找到资源。 -->
        <a href="controller/first">点击跳转</a>
    </body>
    </html>

    8.在webapp -->  WEB-INF下创建pages目录,然后创建两个jsp文件

       firstPage.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>跳转页面</title>
    </head>
    <body>
        <h3>跳转成功</h3>
        <a href="second">我再跳</a>
    </body>
    </html>

      secondPage.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>继续跳转页面</title>
    </head>
    <body>
        <h3>继续跳转成功</h3>
        <a href="index">点击返回首页</a>
    </body>
    </html>

    9.将项目配置到toncat

    点击工具栏三角箭头左边的方框,选择edit configurations

    点击绿色加号,选择local(另:idea配置tomcat传送门:https://www.cnblogs.com/ccoonngg/p/11421689.html

    选择点击deployment,点击右边的绿色加号,选择Artifac...

    选择,点击ok

     Configure..选择本地tomcat的解压目录,最终如下,点击应用

     

    10.运行

    结果,除了上面提到的运行结果,控制台也会一次打印

    目录结构

    以下罗里吧嗦

    使用到的注解

    1.@Controller,spring中的内容,将对象注入到ioc容器中

    2.@RequestMapping

    出现位置:
    类上:
    请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。 写的话需要以/开头。
    它出现的目的是为了使我们的 URL 可以按照模块化管理:
    例如:
    账户模块:
    /account/add
    /account/update
    /account/delete
    ...
    订单模块:
    /order/add
    /order/update
    /order/delete
    红色的部分就是把 RequsetMappding 写在类上,使我们的 URL 更加精细。
    方法上:
    请求 URL 的第二级访问目录。
    属性:
    value:用于指定请求的 URL。 它和 path 属性的作用是一样的。
    method:用于指定请求的方式。比如
    method = {RequestMethod.POST}
    params:用于指定限制请求参数的条件。 它支持简单的表达式。 要求请求参数的 key value 必须和配置的一模一样。
    例如:
    params = {"accountName"},表示请求参数必须有 accountName
    params = {"moeny!100"},表示请求参数中 money 不能是 100
    headers:用于指定限制请求消息头的条件。
    注意:
    以上四个属性只要出现 2 个或以上时,他们的关系是与的关系。
    比如
    @RequestMapping(path = "/index",method = {RequestMethod.GET},paramas = {username = admin},headers = {"Acces"})

    重点来了

    1. 入门案例的执行流程

    1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件
    2. 开启了注解扫描,那么OneController对象就会被创建
    3. index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解
    找到执行的具体方法
    4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件
    5. Tomcat服务器渲染页面,做出响应

    另:springmvc框架基于组件方式的执行流程

     

    详细讲解:

    bilibili传送门:https://www.bilibili.com/video/av50213945

    爱生活,爱码字

    我是匆匆、我曾喂自己半年酒。

    好好生活吧,有缘或许相见。

  • 相关阅读:
    创业团队的狼性管理:慈不掌兵 义不聚财
    爱德华·斯诺登
    塞班岛
    大兴雷克萨斯深度剖析2013款LS460L_深圳大兴雷克萨斯_太平洋汽车网
    金字塔底端_百度百科
    左立_百度百科
    志大才疏_百度百科
    JS~json日期格式化
    MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法
    JS~重写alter与confirm,让它们变成fancybox风格
  • 原文地址:https://www.cnblogs.com/ccoonngg/p/11422384.html
Copyright © 2011-2022 走看看