目录
2.导入依赖包,在pom.xml中导入SpringMVC依赖包,并点击同步
4.在webapp下创建文件夹jsp,再在jsp文件夹下创建login.jsp页面
5.在controller层创建LoginController类
6.在resources文件夹下新建配置文件spring-servlet
1.Model是什么呢?它是用来携带参数的;修改LoginController类
2.完成以上步骤后,接下来我们开始逐层调用:controller调用service层,service层调用dao层
2.修改spring-servlet配置文件,记住要选择mvc!
一、springMVC入门案例
1.创建新模块和相关package
2.导入依赖包,在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>
3.接着我们选择Tomcat运行项目,并点击Edit Configurations,选择Deployment,注意:所有的web项目都需要利用Tomcat才能跑起来,所以我们选择Tomcat进行运行。先把之前发布的项目删掉,点击-号删除,再增加一个新项目,点击+号,点击第一个,然后选择SpringMVC:war包
4.在webapp下创建文件夹jsp,再在jsp文件夹下创建login.jsp页面
5.在controller层创建LoginController类
package com.mvc.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");
}
}
6.在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.mvc"/>
</beans>
7.升级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>
8.运行出现login.jsp内容
二、springMVC传值
1.Model是什么呢?它是用来携带参数的;修改LoginController类
package com.mvc.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","fighting!");
return new ModelAndView("/WEB-INF/login.jsp");
}
}
2.修改login.jsp代码
3.运行,传值成功
三、课堂案例1
1.创建相应包和类
public interface UserDao {
public String findUserName();
}
public class UserDaoImpl implements UserDao {
public String findUserName() {
// todo请求数据库
return "从数据库中获取的用户名oooo";
}
}
public interface UserService {
public String findUserName();
}
public class UserServiceImpl implements UserService {
public String findUserName() {
return null;
}
}
2.完成以上步骤后,接下来我们开始逐层调用:controller调用service层,service层调用dao层
@Repository:代表dao层
@Component:这个惯用实体层
@Service : 这个用于service层
@Controller : 这个用于Controller
修改LoginController类代码
修改UserServiceImpl类
给UserDaoImpl增加注解
3.运行
四、视图解析器
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.mvc"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
2.修改LoginController类
package com.mvc.controller;
import com.mvc.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 String showlogin(Model model){
model.addAttribute("name",userService.findUserName());
return "login";
}
}
3.运行
五、课堂案例2
1.在jsp文件夹下创建注册页面register.jsp
2.修改LoginController类
package com.mvc.controller;
import com.mvc.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 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.修改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>
4.运行
5.更方便:修改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>
六、课堂案例3
1.创建fail。jsp和success。jsp
2.修改login.jsp
<%--
Created by IntelliJ IDEA.
User: YOGA
Date: 2023/10/15
Time: 16:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<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>
3.修改LoginController类
package com.mvc.controller;
import com.mvc.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 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";
}
}
七、SpringMVC接收参数的方法1
1.新建pojo包,并创建User类
package com.mvc.pojo;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2.修改LoginController类
package com.mvc.controller;
import com.mvc.pojo.User;
import com.mvc.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;
@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";
}
@RequestMapping("logincommit1")
public String logincommit1(Model model, User user){
// model.addAttribute("name",userService.findUserName());
if(user.getUsername().equals("admin") && user.getPassword().equals("123456")){
model.addAttribute("username1",user.getUsername());
return "success";
}
return "fail";
}
}
3.修改login.jsp
4.success.jsp添加代码
<h1>登录成功:${username1}</h1>
运行:
八、SpringMVC接收参数的方法2
1.在pojo文件夹下新建News实体类
package com.mvc.pojo;
public class News {
private String id;
private String title;
private String content;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
2.LoginController类添加代码
@RequestMapping("news/{newsid}/{newsid1}")
public String news(Model model,@PathVariable("newsid") String newsid){
//@PathVariable主要作用:映射URL绑定的占位符
//带占位符的URL是 Spring3.0 新增的功能,URL中的 {xxx} 占位符可以通过 @PathVariable(“xxx”) 绑定到操作方法的入参中。
// todo 根据id去数据库中查询新闻
News news=new News();
news.setId(newsid);
news.setTitle("这是标题");
news.setContent("这是内容");
// model.addAttribute("name",userService.findUserName());
model.addAttribute("news",news);
return "news";
}
3.创建news.jsp并添加代码
<h1>学校新闻详情</h1>
<h1>${news.id}</h1>
<h1>${news.title}</h1>
<div>${news.content}</div>
运行
九、jstl标签
(1)jstl-->java标准标签库
(2)为什么要使用JSTL?
- 实现了JSP页面代码的复用
- 基于标签库原理,重复
- 书写JSP页面的可读性强
- 长得很像XML,方便前端检查和参与修改
1.在pom.xml中导入依赖包,并同步
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.2</version>
</dependency>
<!-- jsp 标准标签库 -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
2.LoginController类添加代码
@RequestMapping("newslist")
public String newslist(Model model){
// model.addAttribute("name",userService.findUserName());
// todo 去数据库中查询新闻列表
List<News> newsList=new ArrayList<News>();
for(int i=0;i<=10;i++){
News news=new News();
news.setId("id:"+i);
news.setTitle("title:"+i);
news.setContent("content:"+i);
newsList.add(news);
}
model.addAttribute("newslist",newsList);
return "newslist";
}
3.创建newslist.jsp并添加代码
<%--
Created by IntelliJ IDEA.
User: YOGA
Date: 2023/10/17
Time: 17:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>新闻列表</h1>
<%--jstl标签--%>
<table border="1">
<tr>
<td>新闻id</td>
<td>新闻标题</td>
<td>新闻内容</td>
</tr>
<c:forEach var="news" items="${newslist}">
<tr>
<td>${news.id}</td>
<td>${news.title}</td>
<td>${news.content}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
运行:
十、SpringMVC返回JSON
1.在pom.xml中导入依赖包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
2.修改spring-servlet配置文件,记住要选择mvc!
//改后的
<?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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 开启Spring注解-->
<context:component-scan base-package="com.mvc"/>
<mvc:annotation-driven/>
<!-- 视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
//原来的
<?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/cache"
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 http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
<!-- 开启spring注解-->
<context:component-scan base-package="com.mvc"/>
<!-- 视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
运行:
上课内容总结 及 参考实践该博客: