springMVC 知识点整理PART 2(控制器与视图之间数据的)
2017-05-16 16:10
471 查看
1.控制器传递数据给视图
控制器中的方法返回值可选:String类型及ModelAndView
1. String 返回类型的方法,则需要在方法上加上参数HttpServletRequest 及 HttpServletResponse对象,借助Request对象的SetAttribute方法进行存储数据。再在视图页面中通过EL表达式来获取数据并显示。
public String list(HttpServletRequest request,HttpServletResponse response){
System.out.println("list方法被执行");
//如果我需要把一些数据传递到页面中去,又如何处理
List<String> list=new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("message","你好!");
request.setAttribute("list",list);
return "studentList";
}
2. ModelAndView类型返回的方法,在ModelAndView对象中直接传递数据给视图。
@RequestMapping("/add")
public ModelAndView add(){
System.out.println("add方法被执行");
Map<String,Object> map=new HashMap<String,Object>();
map.put("a","1111");
map.put("b","2222");
map.put("c","3333");
map.put("d","4444");
return new ModelAndView("studentList","map",map);
}
2.从视图传入数据到控制器
1. 在方法上加参数,注意,参数名必须要与表单的元素的name属性名一致,少量数据推荐使用
2. 通过HttpServletRequest对象获取,少量数据推荐使用
3. 如果数据量比较大,就采用实体封装方式来实现,推荐用法。
3.[b]Post提交中文乱码的问题[/b]
springMVC提供了一个过滤器org.springframework.web.filter.CharacterEncodingFilter,类,解决了表单post提交时的中文乱码问题,需要在web.xml文件中对这个过滤器进行配置
4.注解配置请求方式get,post
//value:表示请求的URLmethod=RequestMethod.GET:表示此方法只用于get请求
@RequestMapping(value="/add",method=RequestMethod.GET)
public ModelAndView add(){}
//method=RequestMethod.POST:表示此方法用于post请求@RequestMapping(value="/add",method=RequestMethod.POST)
public ModelAndView add(Studntstudent){}
注意,如果没有设置method 属性,则此方法Get请求与Post请求都可以访问到。
那么在什么情况下需要有2个方法??
当页面有表单的情况下,通常控制器中就需要2个方法。一个方法用于Get请求,一个方法用于Post请求。
5.静态资源访问
在一个项目中,有一些资源属于静态资源(img 、 css 、 js ),与服务器无关。
但是web.xml文件中针对springMVC 的配置是: /
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<!--/表示所有的请求都进行拦截 开发中有人也这样配置 *.do
切记:不能 /* 配置,这种配置是错误的。-->
<url-pattern>/</url-pattern>
/这种配置表示拦截所有请求,从而导致把所有的请求都进行了拦截,连静态资源也被拦截了,导致静态资源不可访问。
如何解决?在springMVC-servlet.xml 的配置文件中进行设置,对静态资源不进行拦截。
<!-- 静态资源的访问配置-->
<mvc:resourceslocation="/images/"mapping="/images/**"/>
<mvc:resourceslocation="/js/"mapping="/js/**"/>
<mvc:resourceslocation="/css/"mapping="/css/**"/>
6.文件上传
1.导包
2. 表单的设置
form中设置属性enctype="multipart/form-data"
3. 通过springMVC中自带的类:CommonsMultipartResolver来实现上传文件的设置,在springMVC-serlvet.xml配置文件的配置,设置文件上传的一些属性(文件大小、缓冲区、字符编码...)
4. 多文件上传功能代码
// 必须要带一个Request对象
@RequestMapping("/upload")
public String upload(HttpServletRequestrequest) {
try {
// 将请求的上下文封装成为 CommonsMultipartResolver对象: 多部分解析器
CommonsMultipartResolver cmr = new CommonsMultipartResolver(request
.getSession().getServletContext());
// 判断表单是否是文件上传 ,包含enctype="multipart/form-data"属性
if (cmr.isMultipart(request)) {
MultipartHttpServletRequest mhsr=
(MultipartHttpServletRequest)request;
// 获取所有的文件
Iterator files =mhsr.getFileNames();
// 循环每一个文件,并上传
while (files.hasNext()) {
// 取出其中的一个文件
MultipartFile mf =mhsr.getFile(files.next().toString());
if (mf !=
null) {
// 生成上传的路径 getOriginalFilename()取得文件名
String path = request.getSession().getServletContext()
.getRealPath("/userfile/") +
mf.getOriginalFilename();
// 上传文件
mf.transferTo(new File(path));
}
}
}
} catch (Exception e) {
System.out.println("有错误:"+e.getMessage());
}
return"fileUpload";
控制器中的方法返回值可选:String类型及ModelAndView
1. String 返回类型的方法,则需要在方法上加上参数HttpServletRequest 及 HttpServletResponse对象,借助Request对象的SetAttribute方法进行存储数据。再在视图页面中通过EL表达式来获取数据并显示。
public String list(HttpServletRequest request,HttpServletResponse response){
System.out.println("list方法被执行");
//如果我需要把一些数据传递到页面中去,又如何处理
List<String> list=new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("message","你好!");
request.setAttribute("list",list);
return "studentList";
}
2. ModelAndView类型返回的方法,在ModelAndView对象中直接传递数据给视图。
@RequestMapping("/add")
public ModelAndView add(){
System.out.println("add方法被执行");
Map<String,Object> map=new HashMap<String,Object>();
map.put("a","1111");
map.put("b","2222");
map.put("c","3333");
map.put("d","4444");
return new ModelAndView("studentList","map",map);
}
2.从视图传入数据到控制器
1. 在方法上加参数,注意,参数名必须要与表单的元素的name属性名一致,少量数据推荐使用
2. 通过HttpServletRequest对象获取,少量数据推荐使用
3. 如果数据量比较大,就采用实体封装方式来实现,推荐用法。
3.[b]Post提交中文乱码的问题[/b]
springMVC提供了一个过滤器org.springframework.web.filter.CharacterEncodingFilter,类,解决了表单post提交时的中文乱码问题,需要在web.xml文件中对这个过滤器进行配置
4.注解配置请求方式get,post
//value:表示请求的URLmethod=RequestMethod.GET:表示此方法只用于get请求
@RequestMapping(value="/add",method=RequestMethod.GET)
public ModelAndView add(){}
//method=RequestMethod.POST:表示此方法用于post请求@RequestMapping(value="/add",method=RequestMethod.POST)
public ModelAndView add(Studntstudent){}
注意,如果没有设置method 属性,则此方法Get请求与Post请求都可以访问到。
那么在什么情况下需要有2个方法??
当页面有表单的情况下,通常控制器中就需要2个方法。一个方法用于Get请求,一个方法用于Post请求。
5.静态资源访问
在一个项目中,有一些资源属于静态资源(img 、 css 、 js ),与服务器无关。
但是web.xml文件中针对springMVC 的配置是: /
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<!--/表示所有的请求都进行拦截 开发中有人也这样配置 *.do
切记:不能 /* 配置,这种配置是错误的。-->
<url-pattern>/</url-pattern>
/这种配置表示拦截所有请求,从而导致把所有的请求都进行了拦截,连静态资源也被拦截了,导致静态资源不可访问。
如何解决?在springMVC-servlet.xml 的配置文件中进行设置,对静态资源不进行拦截。
<!-- 静态资源的访问配置-->
<mvc:resourceslocation="/images/"mapping="/images/**"/>
<mvc:resourceslocation="/js/"mapping="/js/**"/>
<mvc:resourceslocation="/css/"mapping="/css/**"/>
6.文件上传
1.导包
2. 表单的设置
form中设置属性enctype="multipart/form-data"
3. 通过springMVC中自带的类:CommonsMultipartResolver来实现上传文件的设置,在springMVC-serlvet.xml配置文件的配置,设置文件上传的一些属性(文件大小、缓冲区、字符编码...)
4. 多文件上传功能代码
// 必须要带一个Request对象
@RequestMapping("/upload")
public String upload(HttpServletRequestrequest) {
try {
// 将请求的上下文封装成为 CommonsMultipartResolver对象: 多部分解析器
CommonsMultipartResolver cmr = new CommonsMultipartResolver(request
.getSession().getServletContext());
// 判断表单是否是文件上传 ,包含enctype="multipart/form-data"属性
if (cmr.isMultipart(request)) {
MultipartHttpServletRequest mhsr=
(MultipartHttpServletRequest)request;
// 获取所有的文件
Iterator files =mhsr.getFileNames();
// 循环每一个文件,并上传
while (files.hasNext()) {
// 取出其中的一个文件
MultipartFile mf =mhsr.getFile(files.next().toString());
if (mf !=
null) {
// 生成上传的路径 getOriginalFilename()取得文件名
String path = request.getSession().getServletContext()
.getRealPath("/userfile/") +
mf.getOriginalFilename();
// 上传文件
mf.transferTo(new File(path));
}
}
}
} catch (Exception e) {
System.out.println("有错误:"+e.getMessage());
}
return"fileUpload";
相关文章推荐
- springMVC视图层和控制器层之间参数传递
- springMVC视图层和控制器层之间参数传递
- ASP.NET MVC 之控制器与视图之间的数据传递
- 视图控制器ViewControllers之间的数据传递
- 【iOS7的一些总结】3、视图控制器ViewControllers之间的数据传递(2)
- SpringMVC——Controller和视图之间数据的相互传递
- springMVC 知识点整理PART 1(基本概念)
- 控制器和视图之间传递数据的几种方式
- iOS开发中视图控制器ViewControllers之间的数据传递
- 【iOS7的一些总结】2、视图控制器ViewControllers之间的数据传递(1)
- 两个控制器之间的数据传递 (MVC)
- SQL不同服务器数据库之间的数据操作整理
- SpringMVC强大的数据绑定(2)——第六章 注解式控制器详解——跟着开涛学SpringMVC
- ASP.NET MVC 5 学习教程:控制器传递数据给视图
- 爱上MVC3系列~使用视图模型的好处及与数据模型之间的赋值问题
- SQL不同服务器数据库之间的数据操作整理
- 第六章 注解式控制器详解——SpringMVC强大的数据绑定(1)
- 模型表示企业数据和业务规则。控制器接受用户的输入并调用模型和视图去完成用户的需求。
- SQL不同服务器数据库之间的数据操作整理(完整版)
- SQL不同服务器数据库之间的数据操作整理(完整版)