登录页面
${msg}
实现参数绑定有多种方式。
4.2.1 参数直接绑定
直接定义和表单元素name相同的参数
@Controller
@RequestMapping(“user”)
public class UserController {
@PostMapping(“/login”)
public void login(String username, String password){…}
}
4.2.2 @RequestParam注解绑定参数
如果名称不一样,可以通过@RequestParam注解配置参数
@PostMapping(“/login”)
public void login(@RequestParam(“username”)String uname,
@RequestParam(“password”)String pwd){
…
}
4.2.3 对象绑定参数
通过对象也可以进行参数绑定
实体类
public class User {
private String username;
private String password;
…
}
方法定义
@PostMapping(“/login”)
public void login(User user){
…
}
4.2.4 @PathVariable绑定参数
通过URL的路径也可以实现参数绑定,需要给参数添加@PathVariable注解
在URL中可以使用{name}来定位参数的位置,name是@PathVariable注解中配置的名称
@GetMapping(“/login/{username}/{password}”)
public void login(@PathVariable(“username”)String username,
@PathVariable(“password”)String password){
System.out.println(username);
System.out.println(password);
}
在浏览器输入:http://localhost:8080/user/login/admin/123456
可以看到账号和密码的输出,当然登录不适合将账号和密码添加到URL中,这里只是测试
4.2.5 通过Map集合进行参数绑定
在实体类中添加Map集合
public class UserVO {
private Map<String,String> user = new HashMap<>();
//get、set
}
修改表单name为: 集合名[‘属性名’]
修改方法
@PostMapping(“/login”)
public void login(UserVO userVO){
String username = userVO.getUser().get(“username”);
String password = userVO.getUser().get(“password”);
}
4.2.6 通过List集合进行参数绑定
修改集合为List
public class UserVO {
private List user = new ArrayList<>();
//get、set
}
修改表单name为: 集合名[下标]
修改方法
@PostMapping(“/login”)
public void login(UserVO userVO){
String username = userVO.getUser().get(0);
String password = userVO.getUser().get(1);
}
SpringMVC提供了过滤器来设置编码
在web.xml中配置
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
在进行参数绑定时,会自动完成完成基本类型(如byte、short、 int、long、float、double、boolean 、char )以及String类型的数据转换。
因为SpringMVC提供了大量内置的类型转换器Converter,来帮助进行参数在类型转换,如果我们需要完成某些特殊的数据格式的处理,就需要自定义类型转换器。
案例:表单输入id-name-age-subject格式的字符串,绑定到Student类型的参数。
实体类
public class Student {
private Long id;
private String name;
private Integer age;
private String subject;
…get/set
}
自定义转换器
/**
- 学生类型转换器,将id-name-age-subject格式字符串转换为Student对象
*/
public class StudentConverter implements Converter<String, Student> {
@Override
public Student convert(String s) {
//按-分割字符串
String[] strings = s.split(“\-”);
if(strings.length != 4){
throw new IllegalArgumentException(“字符串不符合学生信息格式要求”);
}
//返回Student对象
Student student = new Student();
student.setId(Long.valueOf(strings[0]));
student.setName(strings[1]);
student.setAge(Integer.valueOf(strings[2]));
student.setSubject(strings[3]);
return student;
}
}
注册转换器,修改springmvc的annotation-driver配置
<mvc:annotation-driven conversion-service=“conversionService”/>
控制器
@PostMapping(“/saveStudent”)
public void saveStudent(Student student){
System.out.println(student.getId());
System.out.println(student.getName());
System.out.println(student.getAge());
System.out.println(student.getSubject());
}
页面
======================================================================
在JSP页面中可以通过EL表达式来绑定后台的数据,后台数据可以保存到:
-
将数据保存到HttpServletRequest、HttpSession、ServletContext中
-
在参数中定义Model参数保存数据
-
在参数中定义Map参数保存数据
页面跳转的两种方式:
- 请求转发
forward:url
- 重定向
redirect:url
首页
<%@ page contentType=“text/html;charset=UTF-8” language=“java” isELIgnored=“false” %>
Hello ${user.username}你好
模拟登录,使用User来获得参数,保存User对象到HttpSession,重定向到首页后,可以从首页读取用户名;
保存错误信息到Model对象中,请求转发到登录页面后,可以读取Model中的数据
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-TE0GyRMN-1712453674714)]
最后
对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍
[外链图片转存中…(img-XjazHBfi-1712453674715)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算