了解springmvc,搭建第一个springmvc项目,理解项目目录结构

SpringMVC简介:

Spring MVc是基于Spring框架的基础上采用了Web MVC设计模式的一个轻量级web框架,也是目前最为流行的一个Web框架。Spring MVc框架具有如下一些特点:

1.拥有强大的灵活性,非侵入性和可配置性。

⒉提供了一个前端控制器DispatcherServlet,开发者无需额外开发控制器对象。

3.分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器,每一个功能实现由一个专门的对象负责完成。

4.可以自动绑定用户输入,并正确的转换数据类型。比如,Spring MVc能自动解析字符串,并将其设置为模型的int或者float类型的属性。

 解释:

可配置性:也像spring一样,通过配置完成相关功能;

无需额外开发控制器:以前需要自己写servlet接收和处理前端的请求。自己只需要写一些不共性的东西即可。

将其设置为模型的int或者float类型:把页面的字符串,自动转换成int或float等。

 新建模块springMVC1

 

springboot mvc框架 spring mvc框架特点_User

 

 

 说明:目录结构如上所示,实现的先后顺序如下:

1)  pom.xml   添加依赖库

2)   web.xml   配置dispatcherServlet和Springmvc-config.xml、要处理的路径配置,一般用*.do即可。

3)   index.jsp   显示用户信息

4)   User.java  

5)   UserDaoImp   访问数据库,这里模拟两个用户数据

6)   UserService   提供查看用户的方法

7)   UserController  配置路由和调用相应的方法

8)    Springmvc-config.xml  开启注解扫描

 pom.xml  

添加依赖库

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.20</version>
  </dependency>

  <!--添加springmvc库-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.20</version>
  </dependency>

  <!--添加jsp库-->
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
  </dependency>

  <!--添加jstl标签库-->
  <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13</version>
  </dependency>
</dependencies>

 web.xml  

配置dispatcherServlet和Springmvc-config.xml、要处理的路径配置,一般用*.do即可。

<?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/j2ee"
         xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
         http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4">
  <display-name>Spring Web MVC Hello World Application</display-name>

  <servlet>
    <!-- 配置SpringMVC的前端控制器DispatcherServlet,dispatcherServlet -->
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置项目初始化时需要加载的配置文件为类根路径下的springmvc-config.xml文件 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <!-- 表示容器在启动时立即加载本Servlet -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- 系统默认欢迎页面 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 index.jsp  

显示用户信息

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
    <h2>用户展示</h2>
    <table border="1">
        <tr>
            <th>id</th><th>姓名</th>
        </tr>
        <c:forEach items="${list}" var="l">
            <tr>
                <td>${l.id}</td>
                <td>${l.name}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

 User

package com.scitc.domain;

public class User {
    private String id;
    private String name;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

 UserDaoImp  

访问数据库,这里模拟两个用户数据

package com.scitc.dao;

import com.scitc.domain.User;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

@Repository  //通过注解注入该bean
public class UserDaoImp {
    public List<User> findAll() {
        //模拟数据库操作获取用户信息列表数据赋值给list,并返回list结果集
        List<User> list = new ArrayList<User>();
        User user = new User();
        user.setId("1001");
        user.setName("张三");
        list.add(user);

        User user1 = new User();
        user1.setId("1002");
        user1.setName("李四");
        list.add(user1);

        return list;
    }
}

 UserService  

提供查看用户的方法

package com.scitc.service;

import com.scitc.dao.UserDaoImp;
import com.scitc.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {
    @Autowired
    public UserDaoImp userDao;
    public List<User> findAll() {
        List<User> list=userDao.findAll();
        return list;
    }
}

 UserController 

配置路由和调用相应的方法

package com.scitc.controller;
import com.scitc.domain.User;
import com.scitc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/test.do")
    public void print(){
        System.out.println("1111");
    }
    @RequestMapping("/findAll.do")
    public ModelAndView userList(){
        List<User> list = userService.findAll();
        //创建模块视图对象,方法1:
//        Map<String,Object> model = new HashMap<String,Object>();
//        model.put("list",list);
//        ModelAndView modelAndView = new ModelAndView("/WEB-INF/views/userList.jsp",model);
        //方法2
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/index.jsp");
        modelAndView.addObject("list",list);
        return modelAndView;
    }
}

 Springmvc-config.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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--使用组件扫描的方式,方法1:分开写-->
    <context:component-scan base-package="com.scitc.controller"/>
    <context:component-scan base-package="com.scitc.service"/>
    <context:component-scan base-package="com.scitc.dao"/>
    <!--使用组件扫描的方式,方法2:写一个基包也可以-->
<!--    <context:component-scan base-package="com.scitc"/>-->
    <!-- 使用注解驱动SpringMVC。annotation-driven会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdapter与ExceptionHandlerExceptionResolver三个bean。在Spring3.2以后,RequestMappingHandlerAdapter完全可以代替AnnotationMethodHandlerAdapter-->
    <mvc:annotation-driven />
</beans>

 tomcat服务器配置

本教程用的tomcat9

第1步:请自行到官网下载

 

springboot mvc框架 spring mvc框架特点_springboot mvc框架_02

 

 下载,解压缩,然后再环境变量path中加入tomcat的根目录即可。

 第2步:idea配置tomcat和添加项目。具体请参照网络资源。

 运行tomcat

运行成功后,在浏览器输入

http://localhost:8080/springmvc/user/findAll.do

即可查看到用户信息显示在index.jsp页面上

  

注意:

tomcat9的解析方式,在控制器中的路径,最后一个一定带do的,在请求的时候把.do也加上才能访问到。Tomcat8可能在控制器中不需要带,访问带do有可能访问到,没测试。