SpringMVC传递数据

一、开发步骤

1、新建maven工程

a、添加web.xml

b、添加Tomcat运行环境

c、添加依赖jar包:spring-webmvc

d、添加配置文件:spring-mvc.xml

e、在web.xml文件中配置前端控制器

f、在spring-mvc.xml中配置视图解析器

   <!-- 组件扫描 -->

   <context:component-scanbase-package="cn.xxxx.controller"/>

   <!-- 配置视图解析器 -->

<beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">

      <propertyname="prefix"value="/WEB-INF/web/"/>

      <propertyname="suffix"value=".jsp"/>

   </bean>

   <!--

      1、基于注解的映射器默认是:DefaultAnnotationHandlerMapping,此映射处理器是2.5版本的

      2、3.2版本定义一个新的映射处理器:RequestMappingHandlerMapping

      3、如果要改变默认的映射处理器,使用下面的配置

      4、此配置默认初始化一些工具类:比如异常处理,解析json

   -->

   <mvc:annotation-driven/>

2、定义xxx.jsp页面

3、定义控制器类XxxController

 

二、从客户端向控制器传递数据(页面→控制器)

1、方式一:request对象(不建议使用)

特点:简单,不能实现类型转换。

(1)login.jsp页面

<formaction="${pageContext.request.contextPath}/user/loginHandler.do"method="post">

   姓名:<inputtype="text"name="name"/><br>

   密码:<inputtype="password"name="pwd"/><br>

   <inputtype="submit"value="登录"/>

</form>

(2)控制器类UserController

Package cn.xxxx.controller;
import ......
@Controller
@RequestMapping("/user")
Public class UserController {
	/**
	* 处理登录的提交按钮的请求
	* 1、使用request变量获取数据
	* 2、在方法的参数列表中定义request对象
	* @return
	*/
	@RequestMapping("/loginHandler.do")
	public String loginHandler(HttpServletRequest request) {
		System.out.println(request.getParameter("name"));
		System.out.println(request.getParameter("pwd"));
		return"ok";
	}
}

2、方式二:使用属性传值(1)

特点:参数列表的名称和表单的name属性值相同;

          可以实现自动类型转换,但是可能会有异常;

          表单数据量小。

(1)定义demo.jsp页面和ok.jsp页面

<form action="${pageContext.request.contextPath}/demo/test2.do" method="get">

      姓名:<input type="text" name="name"><br>

      年龄:<input type="text" name="age"><br>

      <input type="submit" value="提交">

   </form>

<bodystyle="font-size:30px;">

   ok!<br>

             ${name},${age}<br>

</body>

(2)定义控制器类DemoController

Package cn.xxxx.controller;
import.....
@Controller
@RequestMapping("/demo")
Public class DemoController {
	//显示demo.jsp页面
	@RequestMapping("/showDemo.do")
	publicString showDemo() {
		return"demo";
	}
	@RequestMapping("/test2.do")
	publicString test2(String name,Integer age) {
		System.out.println(name+","+age);
		return"ok";
	}
}

3、方式二:使用属性传值(2)(表单name属性值和参数列表变量名不相同)

特点:使用@RequestParam注解辅助完成变量的赋值。

@RequestParam("name"):name表示表单name的属性值

如果@RequestParam("name")中的name在页面上不存在,会有400异常

(1)定义demo.jsp页面和ok.jsp页面

<formaction="${pageContext.request.contextPath}/demo/test3.do"method="get">

      姓名:<inputtype="text"name="name"><br>

      年龄:<inputtype="text"name="age"><br>

      <inputtype="submit"value="提交">

   </form>

<bodystyle="font-size:30px;">

   ok!<br>

             ${name},${age}<br>

</body>

(2)定义控制器类DemoController

package cn.xxxx.controller;
import.....
@Controller
@RequestMapping("/demo")
public class DemoController {
	@RequestMapping("/showDemo.do")
	public String showDemo() {
		return "demo";
	}
	@RequestMapping("/test3.do")
	public String test3(@RequestParam("name") String username,Integer age){
		System.out.println(username+","+age);
		return "ok";
	}
}

4、方式三:使用Bean对象传值(适合数据量大)

特点:把表单name属性值封装成类类型:

                 成员变量名称必须与表单的name属性值相同;

                 适合数据量大的参数传值。

(1)定义demo.jsp页面和ok.jsp页面

<formaction="${pageContext.request.contextPath}/demo/test4.do"method="get">

      姓名:<inputtype="text"name="name"><br>

      年龄:<inputtype="text"name="age"><br>

      <inputtype="submit"value="提交">

   </form>

<bodystyle="font-size:30px;">

   ok!<br>

             ${name},${age}<br>

</body>

(2)定义控制器类DemoController

package cn.xxxx.controller;
import.....
@Controller
@RequestMapping("/demo")
public class DemoController {
	@RequestMapping("/showDemo.do")
	public String showDemo() {
		return "demo";
	}
	@RequestMapping("/test4.do")
	public String test4(User user) {
		System.out.println(user.toString());
		return "ok";
	}
}

 

三、从控制器向客户端传递数据(控制器→页面)

request、session(cookie)、application

1、方式一:request、session传递数据到页面

(1)定义demo.jsp页面和ok.jsp页面

<form action="${pageContext.request.contextPath}/demo/test5.do" method="get">

      姓名:<input type="text" name="name"><br>

      年龄:<input type="text" name="age"><br>

      <input type="submit" value="提交">

   </form>

<body style="font-size:30px;">

   ok!<br>

             ${name},${age}<br>

</body>

(2)定义控制器类DemoController

package cn.xxxx.controller;
import.....
@Controller
@RequestMapping("/demo")
public class DemoController {
	@RequestMapping("/showDemo.do")
	public String showDemo() {
		return "demo";
	}
	@RequestMapping("/test5.do")
	public String test5(HttpServletRequest request,HttpSession session) {
		request.setAttribute("name","admin");
		session.setAttribute("age","18");
		return "ok";
	}
}

2、方式二:ModelAndView传递数据(Model→ModelMap→Map)

特点:框架把Map属性获取到,设置到request对象中。

(1)定义demo.jsp页面和ok.jsp页面

<form action="${pageContext.request.contextPath}/demo/test5.do" method="get">

      姓名:<input type="text" name="name"><br>

      年龄:<input type="text" name="age"><br>

      <input type="submit" value="提交">

   </form>

<body style=" font-size:30px;">

   ok!<br>

   ${requestScope.address}<br>

</body>

(2)定义控制器类DemoController

package cn.xxxx.controller;
import.....
@Controller
@RequestMapping("/demo")
public class DemoController {
	@RequestMapping("/showDemo.do")
	public String showDemo() {
		return "demo";
	}
	@RequestMapping("/test6.do")
	public ModelAndView test6() {
		Map<String,Object> map= new HashMap<>();
		map.put("address","xx省xx市");
		return new ModelAndView("ok",map);
	}
}

(3)方式三:ModelMap传递数据(推荐)

特点:使用ModelMap传递数据到页面:

                  map由框架设置到request变量中。

(1)定义demo.jsp页面和ok.jsp页面

<form action="${pageContext.request.contextPath}/demo/test7.do" method="get">

      姓名:<input type="text" name="name"><br>

      年龄:<input type="text" name="age"><br>

      <input type="submit" value="提交">

   </form>

<body style="font-size:30px;">

   ok!<br>

   ${requestScope.phone}

</body>

(2)定义控制器类DemoController

package cn.xxxx.controller;
import.....
@Controller
@RequestMapping("/demo")
public class DemoController {
	@RequestMapping("/showDemo.do")
	public String showDemo() {
		return "demo";
	}
	@RequestMapping("/test7.do")
	public String test7(ModelMap map) {
		map.addAttribute("phone","15888888888");
		return "ok";
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值