SpringMVC框架之创建第一个项目(IDEA)

Spring MVC框架Spring提供的一个强大而灵活的WEB框架(Struts2框架也是WEB框架)。借助于注解,Spring MVC提供了POJO(又称为enitity实体、model模型)的开发模式,使得controller控制器的开发和测试更加简单。这些controller控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。

Spring MVC主要由DispatcherServlet、处理器映射【找控制器】、适配器【调用控制器的方法】、控制器【业务】、视图解析器、视图组成。

下面将演示如何在项目中配置SpringMVC框架,但是由于SpringMVC一般不单独使用,如上介绍,SpringMVC需要配合Spring框架,因此你首先需要掌握一定的Spring框架的使用。

1、创建一个普通的Java Web项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、导入Spring、SpringMVC框架依赖

①、在web/WEB-INF目录下创建lib文件夹

在这里插入图片描述
在这里插入图片描述

②、复制Spring、SpringMVC的依赖到项目lib文件夹

Spring框架支持包下载地址:https://repo.spring.io/release/org/springframework/spring/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③、复制Spring AOP依赖到项目lib文件夹

在这里插入图片描述

④、复制log4j依赖到项目lib文件夹

在这里插入图片描述

⑤、复制Junit测试依赖到项目lib文件夹

在这里插入图片描述
l i b L i b r a r y \color{red}将lib文件夹设置为项目Library!
在这里插入图片描述
在这里插入图片描述
P r o j e c t S t r u c t u r e \color{red}再检查一下ProjectStructure是否错误!
在这里插入图片描述

3、编写配置文件

①、在web/WEB-INF目录下创建文件DispatcherServlet-servlet.xml

在这里插入图片描述
在这里插入图片描述

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

    <!-- 1. 配置处理器映射,spring mvc默认的处理器映射器
			 BeanNameUrlHandlerMapping:根据bean的name属性的url去找handlerController -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!-- 2. 配置处理器适配置器执行Controller -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!-- 3.配置一个控制器 -->
    <bean name="/user.do" class="cn.hestyle.demo.web.controller.UserController"/>
    <!-- 4.配置spring mvc视图解析器
        视图解析器解析的视图路径为:前缀 + modelAndView + 后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

在这里插入图片描述
在这里插入图片描述

②、在src目录下创建文件log4j.properties

在这里插入图片描述

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
③、修改web.xml文件

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 配置spring mvc DispatcherServlet 拦截器 DispatcherServlet -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>

4、编写Controller控制器

在这里插入图片描述

package cn.hestyle.demo.web.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * description: UserController控制器
 *
 * @author hestyle
 * @version 1.0
 * @className springmvc_demo_01->UserController
 * @date 2020-01-27 16:39
 **/
public class UserController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //新建一个视图,关联/WEB-INF/views(前缀)    /user/userList   .jsp后缀
        ModelAndView modelAndView = new ModelAndView("/user/userList");
        //在视图中放置一个object
        modelAndView.addObject("username", "hestyle");
        return modelAndView;
    }
}

5、编写视图(Jsp)

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: hestyle
  Date: 2020/1/27
  Time: 16:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户列表</title>
</head>
<body>
用户列表:<br>
<!-- 使用el表达式取出username -->
${username}
</body>
</html>

6、运行项目,访问/user.do

在这里插入图片描述
在这里插入图片描述
控制台输出的日志信息:
在这里插入图片描述
响应过程大致如下:
加粗样式

7 \color{red}7、注解开发(重点)

上面是通过DispatcherServlet-servlet.xml文件配置bean,配置起来比较复杂,目前比较普遍使用的方法是注解配置,比较便捷。

①、修改DispatcherServlet-servlet.xml配置文件

在这里插入图片描述

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

    <!-- 1.配置注解扫描位置 -->
    <context:component-scan base-package="cn.hestyle.demo.web.controller"/>

    <!-- 2. 配置处理器映射,通过注解来查找 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <!-- 3.配置注解处理适配器来执行控制器的方法 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!-- 配置spring mvc视图解析器
                视图解析器解析的视图路径为:前缀 + modelAndView + 后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
②、修改UserController类文件
package cn.hestyle.demo.web.controller;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * description: UserController控制器
 *
 * @author hestyle
 * @version 1.0
 * @className springmvc_demo_01->UserController
 * @date 2020-01-27 16:39
 **/
@Controller
@RequestMapping("user")
public class UserController {
    //@Controller注解的作用是声明UserController是一个控制器
    //@RequestMapping("user")注解的作用是,设置控制器的根路径

    @RequestMapping("list1.do")
    public String list1(Model model){
        //@RequestMapping("list1.do")注解的作用是申明list1方法处理 /user/list1.do的访问请求
        //model的作用是往jsp传值
        model.addAttribute("username", "hestyle_list1");
        return "/user/userList";
    }

    @RequestMapping("list2.do")
    public String list2(Model model){
        //@RequestMapping("list2.do")注解的作用是申明list2方法处理 /user/list2.do的访问请求
        //model的作用是往jsp传值
        model.addAttribute("username", "hestyle_list2");
        return "/user/userList";
    }
}
③、重启项目,分别访问/user/list1.do/user/list2.do

在这里插入图片描述
在这里插入图片描述
cn.hestyle.demo.web.controller包中可以放置多个controller,每个controller可以声明多个方法,而不用去修改DispatcherServlet-servlet.xml配置文件,只需要在controller头部添加几个注解即可,可以说是简化了配置过程。

以上就是SpringMVC框架之创建第一个项目的主要内容,喜欢的可以点个赞哟~

发布了976 篇原创文章 · 获赞 230 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/104094238