SpringBoot开发之SpringMVC
- 一、SpringMVC入门案例
-
- 1.新建SpringMVC项目,选择Maven
- 2.选择放置路径
- 3.Archetype选择org.apache.maven.archetypes:maven-archetype-webapp,其他不变,点击Create创建
- 4.创建java文件夹,并且将项目需要的包名都创建好
- 5.导入依赖包,在pom.xml中导入SpringMVC依赖包,并点击同步
- 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类
- 13.在resources文件夹下新建配置文件spring-servlet
- 14.升级web.xml
- 15.点击运行,请求成功
- 二、SpringMVC原理图
- 三、课堂案例01
- 四、视图解析器
- 五、课堂案例02
- 六、课堂案例03
- 七、资源下载
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
呼呼呼,熬夜终于学完啦,睡觉睡觉