SpringMVC
Controller
常用注解
- 定义控制器类 @Controller
- 定义请求处理路径
- @RequestMapping
- @GetMapping
- @PostMapping
- 接收处理参数
- @RequestParam
- @ModelAttribute
- @ResponseBody
SpringMVC处理请求参数的方式
view ------请求------>Server
- @RequestParam
- @ModelAttribute(可无可有)对象传值
- URL路径传值 ->(如HTTP URL :/json?name=xx&pwd=xx)
- http://localhost:8080/urlparam/133(跟@ResponseBody一起使用导致路径改变,不建议一起使用)
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5F2rTfJ-1692601523162)(C:\Users\viros826\AppData\Roaming\Typora\typora-user-images\image-20230817153215710.png)]
view<--------响应--------Server
视图输出:${变量名}
- WEB(常用)内置对象传值
- response 有效范围 :一次请求
- session 有效范围:一次会话,整个一系列操作之内
- application 应用 :有效范围:tomcat(服务器)启动到终止
- Model对象传值 有效范围是跟session一样的
- ModelAndView对象传值
view
Freenarker模板语言
-
数据类型处理
<#assign 变量名="value" /> 变量名=${变量名}<br> <#assign str="字符串" /> 字符串变量的值:${str}<br> <#assign userid = 10000000 /> number=${userid?string("#")}<br> ?string("#")->去掉特殊符号 <#assign br = true /> br=${br?c}<br> <hr> <#assign de="2023-08-08 15:45:46" /> ${de}
-
流程控制处理
-
循环控制处理
Model
- Java Bean - Datebase Table
- ORM ->对象关系映射框架
常见的ORM框架(它们都实现JPA规范)
- MyBatis家族(支持灵活配置数据库操作)
- Hibernate(所有数据库操作封装成方法)
- Spring JPA(支持灵活配置封装)
/*
*控制层 @Controller
*服务层 @Service
* 持久化层 @Repository
*/
MyBatis
配置文件
#配置数据库连接参数
spring.datasource.url=jdbc:mysql://localhost:3306/s98mvc
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=990708
依赖
<!--mybatis的依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
mapper接口
/*
*控制层 @Controller
*服务层 @Service
* 持久化层 @Repository
*/
@Repository //在SpringIOC容器注册
@Mapper // 声明此接口是一个映射处理接口
//此接口中,可以处理所有数据库操作
//CRUD
public interface UserMapper {
//查询用户信息
@Select("select * from t_user")
//将我们的数据库列映射到java对象
@Results({
//property对象属性名,column数据库列名;
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "pwd", column = "pwd")
})
List<User> queryUsers();
@Select("select id,name,pwd from t_user where id=#{id}")
@Results({
@Result(property = "id",column = "id"),
@Result(property = "name",column = "name"),
@Result(property = "pwd",column = "pwd")
})
User selUser(int id);
@Insert("insert into t_user values (#{id},#{name},#{pwd})")
void addUser(User user);
@Update("update t_user set name=#{name},pwd=#{pwd} where id=#{id}")
void updateUser(User user);
@Delete("delete from t_user where name=#{uanme}")
void deleteUser(String uname);
}
控制层
@Controller
public class RegController {
@Autowired
UserService userService;
@RequestMapping("/regUser")
public String reg(User user, Model model) {
userService.addUser(user);
List<User> users = userService.queryUsers();
model.addAttribute("users", users);
return "showUser";
}
@RequestMapping("/delUser/{name}")
public String delUser(@PathVariable String name, Model model) {
userService.deleteUser(name);
List<User> users = userService.queryUsers();
model.addAttribute("users", users);
return "showUser";
}
@RequestMapping("/updateUser/{id}")
public String updateUser(@PathVariable String id, Model model) {
String replace = id.replace(",", "");
User user = userService.selUser(Integer.parseInt(replace));
model.addAttribute("user", user);
return "updateUser";
}
@RequestMapping("/upUser")
public String upUser(Model model, User user) {
System.out.println("user:"+user);
userService.updateUser(user);
List<User> users = userService.queryUsers();
model.addAttribute("users", users);
return "showUser";
}
}
//处理用户逻辑
public interface UserService {
void addUser(User user);
List<User>queryUsers();
void updateUser(User user);
void deleteUser(String uname);
User selUser(int id);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public void addUser(User user) {
//生成一个ID
user.setId((int) System.currentTimeMillis());
userMapper.addUser(user);
}
@Override
public List<User> queryUsers() {
return userMapper.queryUsers();
}
@Override
public void updateUser(User user) {
userMapper.updateUser(user);
}
@Override
public void deleteUser(String uname) {
userMapper.deleteUser(uname);
}
@Override
public User selUser(int id) {
return userMapper.selUser(id);
}
}
注册页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="/regUser" method="post">
用户名<input type="text" name="name" placeholder="请输入用户名"/><br>
密码<input type="text" name="pwd" placeholder="请输入密码"/><br>
<button type="submit">提交注册</button>
</form>
</body>
</html>
修改页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/upUser" method="post">
<input type="hidden" name="id" value="${user.id?string("#")}">
<input type="text" name="name" value="${user.name}">
<input type="text" name="pwd" value="${user.pwd}">
<button type="submit">修改</button>
</form>
</body>
</html>
显示页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<#if users??>
<table border="1px">
<thead>
<tr>
<td>编号</td>
<td>名称</td>
<td>密码</td>
<td>操作</td>
</tr>
</thead>
<tbody>
<#list users as user>
<tr>
<td>${user.id?string("#")}</td>
<td>${user.name}</td>
<td>${user.pwd}</td>
<td>
<a href="/delUser/${user.name}">删除</a>
<a href="/updateUser/${user.id}">修改</a>
</td>
</tr>
</#list>
</tbody>
</table>
</#if>
</body>
</html>