SpringBoot开发之SpringMVC

SpringBoot开发之SpringMVC

MVC分为V、C、M
V:View 视图层:展示界面:jsp、html等
C:Controller 控制层:Servlet:接收参数、转发参数
M:Model 模型层:Service+Dao

一、SpringMVC入门案例

1.新建SpringMVC项目,选择Maven

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

2.选择放置路径

在这里插入图片描述

3.Archetype选择org.apache.maven.archetypes:maven-archetype-webapp,其他不变,点击Create创建

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

4.创建java文件夹,并且将项目需要的包名都创建好

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

在这里插入图片描述

5.导入依赖包,在pom.xml中导入SpringMVC依赖包,并点击同步

在这里插入图片描述

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.22</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>

6.接着我们选择Tomcat运行项目,并点击Edit Configurations,选择Deployment,注意:所有的web项目都需要利用Tomcat才能跑起来,所以我们选择Tomcat进行运行。

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

7.先把之前发布的项目删掉,点击-号删除

在这里插入图片描述

8.再增加一个新项目,点击+号,点击第一个,然后选择SpringMVC:war包

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

9.点击Apply,点击OK

在这里插入图片描述

10.点击运行,将项目跑起来,出现Hello World!即正确

在这里插入图片描述

11.在webapp下创建文件夹jsp,再在jsp文件夹下创建login.jsp页面

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

12.在controller层创建LoginController类

在这里插入图片描述

package com.zou.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class LoginController {
    
    
    @RequestMapping("login")
    public ModelAndView showlogin(){
    
    
        return new ModelAndView("/WEB-INF/jsp/login.jsp");
    }
}

13.在resources文件夹下新建配置文件spring-servlet

在这里插入图片描述

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.zou"/>
</beans>

14.升级web.xml

tomcat启动改文件会被加载
该文件加载时,启动spring容器
DispatcherServlet SpringMVC框架封装一个类 继承servlet
在这里插入图片描述

<?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">
  <!-- tomcat启动改文件会被加载    该文件加载时,启动spring容器 -->
  <!--    DispatcherServlet springmvc框架封装一个类 继承servlet -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-servlet.xml</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!--    http://localhost:8080/SpringMVC_war/login-->
</web-app>

15.点击运行,请求成功

在这里插入图片描述

二、SpringMVC原理图

在这里插入图片描述

1.Model是什么呢?它是用来携带参数的;修改LoginController类

在这里插入图片描述

package com.zou.controller;

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

@Controller
public class LoginController {
    
    
    @RequestMapping("login")
    public ModelAndView showlogin(Model model){
    
    
        model.addAttribute("name","zhhh");
        return new ModelAndView("/WEB-INF/jsp/login.jsp");
    }
}

2.修改login.jsp代码

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/9/25
  Time: 22:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登录页面</h1>
<%--el表达式--%>
<div>${name}</div>
</body>
</html>

3.点击运行,传值成功

在这里插入图片描述

三、课堂案例01

1.在service层创建接口UserService

在这里插入图片描述

package com.zou.service;

public interface UserService {
    
    
    public String findUserName();
}

2.在service层创建包impl,并创建实现类UserServiceImpl

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

package com.zou.service.impl;

import com.zou.service.UserService;

public class UserServiceImpl implements UserService {
    
    
    public String findUserName() {
    
    
        return null;
    }
}

3.在dao层创建接口UserDao

在这里插入图片描述

package com.zou.dao;

public interface UserDao {
    
    
    public String findUserName();
}

4.在dao层创建包impl,并创建实现类UserDaoImpl

在这里插入图片描述

package com.zou.dao.impl;

import com.zou.dao.UserDao;

public class UserDaoImpl implements UserDao {
    
    
    public String findUserName() {
    
    
//        todo请求数据库
        return "从数据库中获取的用户名oooo";
    }
}

5.完成以上步骤后,接下来我们开始逐层调用:controller调用service层,service层调用dao层

(1)修改LoginController类代码

在这里插入图片描述

package com.zou.controller;

import com.zou.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class LoginController {
    
    
    @Autowired
    UserService userService;
    @RequestMapping("login")
    public ModelAndView showlogin(Model model){
    
    
        model.addAttribute("name",userService.findUserName());
        return new ModelAndView("/WEB-INF/jsp/login.jsp");
    }
}

(2)修改UserServiceImpl类

在这里插入图片描述

package com.zou.service.impl;

import com.zou.dao.UserDao;
import com.zou.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    
    
    @Autowired
    UserDao userDao;
    public String findUserName() {
    
    
        return userDao.findUserName();
    }
}


(3)给UserDaoImpl增加注解

package com.zou.dao.impl;

import com.zou.dao.UserDao;
import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpl implements UserDao {
    
    
    public String findUserName() {
    
    
//        todo请求数据库
        return "从数据库中获取的用户名oooo";
    }
}

6.点击运行,案例请求成功

在这里插入图片描述

四、视图解析器

1.修改配置文件spring-servlet

在这里插入图片描述

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.zou"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

2.修改LoginController类

package com.zou.controller;

import com.zou.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Controller
public class LoginController {
    
    
    @Autowired
    UserService userService;
    @RequestMapping("login")
    public String showlogin(Model model){
    
    
        model.addAttribute("name",userService.findUserName());
        return "login";
    }
}

3.点击运行,请求依然成功

在这里插入图片描述

五、课堂案例02

1.在jsp文件夹下创建注册页面register.jsp

在这里插入图片描述

2.修改LoginController类

package com.zou.controller;

import com.zou.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Controller
public class LoginController {
    
    
    @Autowired
    UserService userService;
    @RequestMapping("login")
    public String showlogin(Model model){
    
    
        model.addAttribute("name",userService.findUserName());
        return "login";
    }

    @RequestMapping("register")
    public String showregister(Model model){
    
    
//        model.addAttribute("name",userService.findUserName());
        return "register";
    }
}

3.点击运行,访问注册页面http://localhost:8080/SpringMVC_war/register,请求成功

在这里插入图片描述

4.修改index.jsp

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<a href="http://localhost:8080/SpringMVC_war/login">登录页面</a>
<a href="http://localhost:8080/SpringMVC_war/register">注册页面</a>
</body>
</html>

5.点击运行,访问http://localhost:8080/SpringMVC_war

在这里插入图片描述

(1)点击登录页面跳转到登录页面

在这里插入图片描述

(2)点击注册页面跳转到注册页面

在这里插入图片描述

6.更方便的方法

(1)修改index.jsp

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<%--<a href="http://localhost:8080/SpringMVC_war/login">登录页面</a>--%>
<%--<a href="http://localhost:8080/SpringMVC_war/register">注册页面</a>--%>
<a href="${pageContext.request.contextPath}/login">登录页面</a>
<a href="${pageContext.request.contextPath}/register">注册页面</a>
</body>
</html>

(2)点击运行,同样请求成功

在这里插入图片描述

六、课堂案例03

1.修改login.jsp

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/9/25
  Time: 22:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登录页面</h1>
<%--el表达式--%>
<div>${
    
    name}</div>
<form action="${pageContext.request.contextPath}/logincommit" method="post">
    <div>用户名:<input name="username"></div>
    <div>密码:<input name="password"></div>
    <div><input type="submit" value="提交"></div>
</form>
</body>
</html>

2.点击运行看看效果

在这里插入图片描述

3.在jsp文件夹下创建跳转成功页面success.jsp

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/9/26
  Time: 1:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登录成功</h1>
</body>
</html>

4.在jsp文件夹下创建跳转成功页面fail.jsp

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/9/26
  Time: 1:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登录失败</h1>
</body>
</html>

5.修改LoginController类

在这里插入图片描述

package com.zou.controller;

import com.zou.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Controller
public class LoginController {
    
    
    @Autowired
    UserService userService;
    @RequestMapping("login")
    public String showlogin(Model model){
    
    
        model.addAttribute("name",userService.findUserName());
        return "login";
    }

    @RequestMapping("register")
    public String showregister(Model model){
    
    
//        model.addAttribute("name",userService.findUserName());
        return "register";
    }

    @RequestMapping("logincommit")
    public String logincommit(Model model,String username,String password){
    
    
//        model.addAttribute("name",userService.findUserName());
        if(username.equals("admin") && password.equals("123456")){
    
    
            model.addAttribute("username",username);
            return "success";
        }
        return "fail";
    }
}

6.修改success.jsp

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/9/26
  Time: 1:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登录成功</h1>
<h1>湖南中医药大学欢迎您!:${
    
    username}</h1>
</body>
</html>

7.点击运行

在这里插入图片描述

(1)输入错误信息点击提交跳转到失败页面

在这里插入图片描述

在这里插入图片描述

(2)输入正确信息跳转到成功页面

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

七、资源下载

下载地址:SpringBoot开发之SpringMVC
呼呼呼,熬夜终于学完啦,睡觉睡觉

猜你喜欢

转载自blog.csdn.net/qq_61963074/article/details/127043343
今日推荐