springMVC(2)---获取前段数据

2年前 (2022) 程序员胖胖胖虎阿
286 0 0

springMVC(1)---获取前段数据

        首先说明,如果你学过Struts2,那么在学springMVC就会简单很多,我也不最基础的开始写了,我前篇文章搭建了个ssm框架,算是springmvc入门了。

        链接:基于maven的ssm框架整合

 

    一. 有哪些绑定数据的注解:           

     1.@RequestParam,绑定单个请求数据,可以是URL中的数据,表单提交的数据或上传的文件; 
     2.@PathVariable,绑定URL模板变量值; 
     3.@CookieValue,绑定Cookie数据; 
     4.@RequestHeader,绑定请求头数据; 
     5.@ModelAttribute,绑定数据到Model; 
     6.@SessionAttributes,绑定数据到Session; 
     7.@RequestBody,用来处理Content-Type不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等; 
     8.@RequestPart,绑定“multipart/data”数据,并可以根据数据类型进项对象转换;

 

  二.@RequestParam讲解                                          

    首先说明,项目的框架和架包我直接用的是smm框架整合的内容,我是在这个基础上进行操作,先看我jsp放置。

springMVC(2)---获取前段数据

(1)先看Controller层

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ParamController {
  
    /**
     * GET请求
     */
    @RequestMapping(value="/jsp/paramdate", method = {RequestMethod.GET})
    public ModelAndView paramBind(){
        
        ModelAndView modelAndView = new ModelAndView(); 
        //因为我这边指定是post请求,所以不会走到这里,所以haha.jsp也没有写
        modelAndView.setViewName("haha");  
        return modelAndView;
    }
    
    /**
     * POST请求
     */  
    @RequestMapping(value="/jsp/paramdate", method = {RequestMethod.POST})
    public ModelAndView paramBind(HttpServletRequest request, @RequestParam("urlParam") String urlParam, @RequestParam("formParam") 
String formParam, @RequestParam("formFile") MultipartFile formFile){ //通过注解直接获得 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("urlParam", urlParam); modelAndView.addObject("formParam", formParam); modelAndView.addObject("formFileName", formFile.getOriginalFilename()); //如果不用注解获得数据,我们也可以手动获取 String urlParam1 = ServletRequestUtils.getStringParameter(request, "urlParam", null); String formParam1 = ServletRequestUtils.getStringParameter(request, "formParam", null); MultipartFile formFile1 = ((MultipartHttpServletRequest) request).getFile("formFile"); modelAndView.addObject("urlParam1", urlParam1); modelAndView.addObject("formParam1", formParam1); modelAndView.addObject("formFileName1", formFile1.getOriginalFilename()); //setViewName代表返回界面名称 modelAndView.setViewName("return"); return modelAndView; } }

(2)开始的start.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    <form action="paramdate?urlParam=你好" method="post" enctype="multipart/form-data"> 
        <input type="text" name="formParam" /><br/> 
        <input type="file" name="formFile" /><br/>
        <input type="submit" value="Submit" />
    </form>  
</body>
</html>

界面

springMVC(2)---获取前段数据

(3)返回return.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    注解获取数据:<br/><br/>
    ${urlParam}<br/>
    ${formParam}<br/>
    ${formFileName}<br/><br/><br/><br/>
    手动获取数据:<br/><br/>
    ${urlParam1}<br/>
    ${formParam1}<br/>
    ${formFileName1}<br/>
</body>
</html>

界面

springMVC(2)---获取前段数据

通过这个小案例,我们通过注解和非注解的方式,把前段界面的值传到后端,在从后端传到前段。

思考:我们在实际开发中,在前段往后段传值的时候,后端一个一个获取值再放到Model实体中,还是太麻烦。别担心,我们不需要把数据绑定到一个个变量然后在对model赋值,只需要把model加入相应的action参数(这里不需要指定绑定数据的注解)Spring MVC会自动进行数据转换并绑定到model对象上,一切就是这么简单。

 

三.通过实体获取前端值                                                       

 (1)建立User实体

public class User {

    private String name;
    private String password;

/*提供set和get方法,toString方法*/
}

(2)建立Controller类

import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.ssm.model.User;

@Controller
public class UsersController {

@RequestMapping("/jsp/loging")    
public void getUser(HttpServletRequest request, Model model,User user){
    User  users=user;
    System.out.println(users.getName()+"--"+users.getPassword());
}
}

(3)开始loging.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!-- 如何要使用SpringMVC标签,那么一定要添加下面这个taglib -->
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

 <!-- 如果你要使用model进行赋值,那就需要指明哪个model,而且id中的值要和下面值一致,不然会报错 -->
 <!-- Neither BindingResult nor plain target object for bean name 'users' available as request attribute -->
<jsp:useBean id="user" class="com.ssm.model.User" scope="request"/>  
<html>
<body>
    <form:form action="loging" modelAttribute="user" method="post">     
        用户名:<form:input path="name"/><br/>
        密 码:<form:password path="password"/><br/>
        <input type="submit" value="Submit" />
    </form:form>  
</body>
</html>
<!-- 还有如果你的form表单中,path中的名字,在model中没有也会报错,比如我加一个names,当加载页面时报错 -->
<!-- Invalid property 'names' of bean class [com.ssm.model.User]: Bean property 'names' is not readable -->

 界面 (密码123)

springMVC(2)---获取前段数据

(4)最后我们在后台看我们打印的那条数据

springMVC(2)---获取前段数据

已经成功,直接把属性注入到了user中。

 

想的太多,做的太少,中间的落差就是烦恼,要么去做,要么别想 少尉【8】

 

版权声明:程序员胖胖胖虎阿 发表于 2022年10月31日 下午5:32。
转载请注明:springMVC(2)---获取前段数据 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...