zoukankan      html  css  js  c++  java
  • SpringMVC_创建一个springmvc

    # SpringMVC 简介
    # 创建一个SpringMVC

    1:创建一个maven项目

    (创建maven项目的目的是,便于开发者管理jar文件,当然也可以创建普通的web项目)

    2:修改pom.xml文件中的内容(用于导入一些相关的jar包)

    <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.doaoao</groupId> <artifactId>firstMvc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.4.RELEASE</version> </dependency> </dependencies> <build> <finalName>firstMvc</finalName> <plugins> <!-- 编译插件,指定编译用的的jdk版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <!-- jdk的版本号 --> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>

    3:在webapp目录下创建WEB-INF目录,在WEB-INF目录下创建web.xml文件(该文件可从其它wen文件中拷贝过来)

    该文件用于注册springmvc的中央控制器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id
    ="WebApp_ID" version="2.5"> <display-name>firstMvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 注册spring MVC中央控制器 --> <servlet> <servlet-name>springMVC</servlet-name> <!-- spring MVC中的核心控制器 --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!-- 保证中央控制器的配置文件的加载级别是最优先的 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>

    4:在maven项目的src/main/resources目录下创建springmvc配置文件,文件名随意,但需与第三部中的<param-value>标签中的保持一致即可

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    </beans>   

     5:创建一个类来实现接口 " org.springframework.web.servlet.mvc.Controller ",将实现该接口的类称为Controller

    package com.doaoao.controller;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    public class HelloSpringMvc implements Controller
    {
        @Override
        public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception
        {
            ModelAndView mv = new ModelAndView();
            
            // 向ModelAndView这个对象中添加一条数据,命名未hello,内容为hello first spring mvc
            mv.addObject("hello", "hello first spring mvc");
            
            // 括号中的内容是要跳转的jsp的路径和文件名
            mv.setViewName("/WEB-INF/jsp/first.jsp");
            return mv;
        }
    }

     6:在SpringMVC配置文件 springmvc.xml文件中注册Controller(该Controller为第5步所创建的)

    <bean id="/hello.do" class="com.doaoao.controller.HelloSpringMvc" />

    7:在WEB_INF/jsp 下创建文件 first.jsp(与第5步中跳转的页面地址一样)

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
    </head>
    <body>
        ${hello}
    </body>
    </html>

     8:在浏览器中访问:http://localhost:8080/newMvc/hello.do

    hello为第5步所编写的所要访问的地址

    如果当前的浏览器显示 "hello first spring mvc" 说明创建成功

    # 配置视图解析器

    在上方的代码中,会有冗余现象出现

    在Controller中,如果编写多个Cntroller的话,要编写多次 mv.setViewName("/WEB-INF/jsp/first.jsp"); 中的 /WEB-INF/jsp 和 .jsp 所以可以配置视图解析器来解决该问题,视图解析器是springmvc提供的

    1:在springmvc.xml 文件中配置视图解析器

    <!-- 视图解释类 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        
        <!-- 后缀名 -->
        <property name="suffix" value=".jsp" />
    </bean>
    ean>

    2:修改Conroller中的内容(也就是上方所创建的HelloSpringMvc中的内容)

    mv.setViewName("first");
    # 上方第一个SpringMvc的执行流程

    1:用户按下回车键,浏览器将请求 http://localhost:8080/newMvc/hello.do 发送到web服务器(tomcat服务器),然后系统会在web.xml文件中查找与之匹配的servlet,我们在web.xml中设置的拦截请求 .do ,只要请求是以.do 结尾的,都会匹配到springMVC的核心 DispatcherServlet 上

    2:随后 DispatcherServlet 会到springmvc配置文件springmvc.xml中查找与hello.do请求相匹配的Controller,就例如上面我们为请求 hello.do所配置的Cnntroller响应为 com.doaoao.controller.HelloSpringMvc  

    3:当找到对应的Controller时,DispatcherServlet 会将请求转到对应的Controller中,并调用该类中的 handleRequest方法来处理该请求

    4:在handleRequest方法中执行完成后会将ModelAndView对象返回给DispatcherServlet,然后DispatcherServlet将jsp响应给浏览器,流程结束

    本笔记参考自:小猴子老师教程 http://www.monkey1024.com

  • 相关阅读:
    Thrift中实现Java与Python的RPC互相调用
    Thrift介绍以及Java中使用Thrift实现RPC示例
    Netty中集成Protobuf实现Java对象数据传递
    ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化
    ProtoBuf在使用protoc进行编译时提示: Required fields are not allowed in proto3
    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息
    Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    Gradle项目在IDEA中运行时提示:Unnecessarily replacing a task that does not exist is not supported. Use create() or register() directly instead.
    Windows下curl的下载与使用
  • 原文地址:https://www.cnblogs.com/Doaoao/p/10644843.html
Copyright © 2011-2022 走看看