语法:return “业务逻辑名”
例子:return “showUer”---->/showUser.jsp
redirect跳转到页面:使用SpringMVC提供rediret:关键字进行重定向页面跳转
语法:return “redirect:/index.jsp”
注意:使用redirect跳转页面不会经过视图解析器
2.Controller跳转到Controller
forward跳转到Controller:
使用SpringMvc提供的关键字forward
语法:forward:/跳转类上@requestMapping的值/跳转类中方法@RequestMapping的值
例子:return “forward:test:/”;
redirect跳转到Controller:使用SpringMvc提供的关键字redirect
语法:redirect:/跳转类上@requestMapping的值/跳转类中方法@RequestMapping的值
forward
跳转到页面(.jsp
)示意图:
redirect
跳转到页面(.jsp
)示意图:
forward方法:
Controller层跳转到另外一个控制层(controller
)示意图:
- 如果跳本类的一个控制器(
controller
)方法示意图:
redirect方法
: Controller层跳转到另外一个控制层(controller
)示意图:
2、跳转方法总结
===================================================================================
接收参数语法说明:springmvc中使用控制器方法参数来收集客户端的请求参数,因此在接收请求参数时直接在需要控制器方法声明即可,springmvc可以自动根据指定类型完成类型的转换操作
1、接收零散类型的参数
如:八种基本类型+String+日期类型
Controller
中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。并且能自动做类型
转换;
- 自动的类型转换是指从String向其他类型 的转换
(1)前端传递参数
#get方式传递参数
http://localhost:8080/SpringMvc/user/register?
name=王恒杰&password=234&sex=true&birthday=1999/12/03&salary=20000
#post方式传递参数
姓名:
密码:
性别:
生日:
工资:
(2)后台Controller接收数据
//负责控制层组件对象创建
@Controller(“userController”)
//类上的控制器映射器,相当于Struts2中的namespace
@RequestMapping(“user”)
public class UserController {
@RequestMapping(“register”)
public String register(String name, String password, Boolean sex, Date birthday, Double salary) {
System.out.println(“注册成功”);
System.out.println(“姓名” + name);
System.out.println(“密码” + password);
System.out.println(“性别” + sex);
System.out.println(“生日” + birthday);
System.out.println(“工资” + salary);
return “index”;
}
注意:springmvc在接收日期类型参数时日期格式必须为yyyy/MM/dd HH:mm:ss
2、接收对象类型参数
(1)前端传递参数
姓名:
密码:
性别:
生日:
工资:
- 注意:
在接收对象类型参数时和struts2接收不同,springmvc直接根据传递参数名与对象中属性名一致自动封装对象
(2)后台Controller接收数据
- 实体类
public class User implements Serializable {
private static final Long serialVersionUID=1L;
private String name;
private String password;
private String sex;
private String birthday;
private String Salary;
- 控制器中接收前端数据
//负责控制层组件对象创建
@Controller(“userController”)
//类上的控制器映射器,相当于Struts2中的namespace
@RequestMapping(“user”)
public class UserController{
@RequestMapping(“register”)
public String register(User user){
System.out.println(“注册成功”);
System.out.println(“姓名”+user.getName());
System.out.println(“密码”+user.getPassword());
System.out.println(“性别”+user.getSex());
System.out.println(“生日”+user.getBirthday());
System.out.println(“工资”+user.getSalary());
return “redirect:/index.jsp”;
}
3、接收数组类型参数
(1)前端传递参数
(2)后台Controller接收数据
//负责控制层组件对象创建
@Controller(“userController”)
//类上的控制器映射器,相当于Struts2中的namespace
@RequestMapping(“user”)
public class UserController{
@RequestMapping(“register”)
public String register(User user, String[] hobby){
System.out.println(“注册成功”);
System.out.println(“姓名:”+user.getName());
System.out.println(“密码:”+user.getPassword());
System.out.println(“性别:”+user.getSex());
System.out.println(“生日:”+user.getBirthday());
System.out.println(“工资:”+user.getSalary());
System.out.println(“爱好:”);
for (String s : hobby) {
System.out.println(s);
}
return “redirect:/index.jsp”;
}
4、SpringMVC接收参数中文乱码解决方案
(1)在使用post方式接收请求参数时出现中文乱码接收数据问题解决
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
charset
/*
(2)在使用set方式中文乱码问题
改tomcat的server.xml
配置文件大概在50多行加上URIEncoding="UTF-8"
1.针对于GET方式中文乱码解决方案:
<Connector connectionTimeout=“20000”
port=“8080”
protocol=“HTTP/1.1”
redirectPort=“8443” URIEncoding=“UTF-8”/>
- 成功设置之后,接收到的数据就不会乱码了!
5、接收集合类型参数
说明:springmvc不支持直接将接收集合声明为控制器方法参数进行接收,
如果要接收集合类型参数必须使用对象封装要接收接收类型才可以
(1)前端传递参数
姓名:
密码:
性别:
生日:
工资:
爱好:
吃饭:
睡觉:
爱杨福君:
抽烟:
喝酒:
烫头发:
擅长技术:
python
java
c++
linux
计算机网络
go
(2)后台Controller接口
// 1.封装接收集合类型对象---->在spring mvc中用来接收集合类型参数
class Collection{
private List lists;
public List getLists() {
return lists;
}
public void setLists(List lists) {
this.lists = lists;
}
}
// 2.控制器中接收集合类型参数
//负责控制层组件对象创建
@Controller(“userController”)
//类上的控制器映射器,相当于Struts2中的namespace
@RequestMapping(“user”)
public class UserController{
@RequestMapping(“register”)
public String register(User user, String[] hobby,Collection collection){
System.out.println(“注册成功”);
System.out.println(“姓名:”+user.getName());
System.out.println(“密码:”+user.getPassword());
System.out.println(“性别:”+user.getSex());
System.out.println(“生日:”+user.getBirthday());
System.out.println(“工资:”+user.getSalary());
System.out.println(“爱好:”);
for (String s : hobby) {
System.out.print(s);
}
//换行
System.out.println();
System.out.println(“个人技能”);
for (String list : collection.getLists()) {
System.out.print(list+" ,");
}
return “redirect:/index.jsp”;
}
(3)使用Lambda优化接收集合和数组数据
- 报错原因:使用Lambda需要JDK8版本及以上
- 优化后ontroller接收数据代码
class Collection{
private List lists;
public List getLists() {
return lists;
}
public void setLists(List lists) {
this.lists = lists;
}
}
//负责控制层组件对象创建
@Controller(“userController”)
//类上的控制器映射器,相当于Struts2中的namespace
@RequestMapping(“user”)
public class UserController{
@RequestMapping(“register”)
public String register(User user, String[] hobby,Collection collection){
System.out.println(“注册成功”);
System.out.println(“姓名:”+user.getName());
System.out.println(“密码:”+user.getPassword());
System.out.println(“性别:”+user.getSex());
System.out.println(“生日:”+user.getBirthday());
System.out.println(“工资:”+user.getSalary());
//优化版本,使用Lambda表达式接收集合和数组
System.out.println(“爱好:”);
Arrays.asList(hobby).forEach(item -> System.out.println(item));
//换行
System.out.println();
System.out.println(“个人技能”);
collection.getLists().forEach(name-> System.out.println(name));
return “redirect:/index.jsp”;
}
}
=====================================================================================
1.数据传递机制
1.数据怎么存
Servlet 作用域 Struts2 作用域 SpringMVC 作用域
2.数据怎么取
Servlet EL表达式 Struts2 EL表达式 SpringMVC EL表达式
3.数据怎么展示
Servlet JSTL标签 Struts2 JSTl标签 SpringMVC JSTl标签
2.使用forward跳转传递数据
1.使用servlet中原始的request作用域传递数据
request.setAttribute(“key”,value);
2.使用是springmvc中封装的Model和ModelMap对象(底层对request作用域封装)
model.addAttribute(key,value);
modelMap.addAttribute(key,value);
(1)使用servlet中原始的request作用域传递数据
#如何获取springmvc控制器方法中获取request对象,response对象?
注意:直接将request,response对象作为控制器方法参数声明即可获取
- controller层使用request传递数据
//方法上的控制器映射器,相当于Struts中的name
@RequestMapping(“queryAll”)
public String queryAll(HttpServletRequest request, HttpServletResponse response) {
System.out.println(“SpringMvc使用Request数据”);
request.setAttribute(“name”,“王恒杰”);
//解析结果:前缀+返回值+后缀
return “index”;
}
- 客户端使用EL接收数据
<%@page pageEncoding=“UTF-8” isELIgnored=“false” %>
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,
最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!
析结果:前缀+返回值+后缀
return “index”;
}
- 客户端使用EL接收数据
<%@page pageEncoding=“UTF-8” isELIgnored=“false” %>
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-vbrZyEF9-1710760468341)]
[外链图片转存中…(img-qKAmiGF0-1710760468342)]
[外链图片转存中…(img-WaHAyZl2-1710760468342)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-mlqzsaDs-1710760468343)]
总结
对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,
[外链图片转存中…(img-pgYOnqCn-1710760468343)]
[外链图片转存中…(img-pguyRSZ3-1710760468343)]
最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!