ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springmvc框架1:第一个spring mvc项目

2022-09-05 23:00:24  阅读:250  来源: 互联网

标签:springmvc spring list springframework mvc User org import public


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

 

 

 

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

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步:请自行到官网下载

 

 

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

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

 运行tomcat

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

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

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

  

注意:

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

标签:springmvc,spring,list,springframework,mvc,User,org,import,public
来源: https://www.cnblogs.com/hemomo/p/16659944.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有