SpringMVC学习2——SpringMVC与jsp的参数传递和返回值响应

SpringMVC学习2——SpringMVC与jsp的参数传递和返回值响应

解决提交乱码的问题:

在web.xml中加入过滤器:

<!-- 解决post乱码问题 -->
	 <filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<!-- 设置编码参是UTF8 -->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

参数传递

获取get请求中的参数

@RequestMapping("/addUser1")
public String addUser1(String username,String password) {
  System.out.println("username is:"+username);
  System.out.println("password is:"+password);
  return "demo/index";
}

// 可以用@RequestParam("password")来进行参数名的转换
public String addUser1(String username, @RequestParam("password") String psw) {...}

// 设定参数必传和默认值
public String addUser1(String username, @RequestParam(value="password",required=true, defaultValue="123") String psw) {...}

通过HttpServletRequest接收

 @RequestMapping("/addUser2")
    public String addUser2(HttpServletRequest request) {
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        System.out.println("username is:"+username);
        System.out.println("password is:"+password);
        return "demo/index";
}

注意:post方式和get方式都可以, 但不能接收json, post方式的时候编码方式需设置为:x-www-form-urlencoded转换为键值对

通过一个bean来接收


@RequestMapping("/doLogin")
    public User doLogin(User u) {
        logger.info("name: " + u.getName());
        logger.info("pswd: " + u.getPswd());
        User user = new User();
        user.setName(u.getName());
        user.setPswd(u.getPswd());

        return user;
    }
    
注意: post方式和get方式都可以,同时,也可以接受json数据

使用Map接收json

@RequestMapping("/doLogin")
    public @ResponseBody User doLogin(@RequestBody Map<String, String> u) {

        logger.info("name: " + u.get("name"));
        logger.info("pswd: " + u.get("pswd"));

        User user = new User();
        user.setName(u.get("name"));
        user.setPswd(u.get("pswd"));

        return user;
    }

返回值响应

返回值响应有三种:

1、返回ModelAndView 2、返回void 但是用request和response进行额外处理 3、返回string

这里主要看下2、3

返回void 但是用request和response进行额外处理

	@RequestMapping("queryVoid")
	public void queryVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {

		// request响应用户请求
		// request.setAttribute("msg", "这个是request响应的消息");
		// request.getRequestDispatcher("/WEB-INF/jsp/msg.jsp").forward(request,
		// response);

		// response响应用户请求
		// response.sendRedirect("itemList.action");
		// 设置响应的字符编码
		// response.setContentType("text/html;charset=utf-8");

	}

注意:request 做跳转可以带入参数,response做跳转无法带入参数

返回string

	@RequestMapping("item/{id}")
	public String itemQuery(@PathVariable("id") Integer ids,Model model) {
		...
		return "forward:itemList:action";
	}

通过前缀forward,redirect 进行寻址,相当于requst的请求转发和response请求重定向。也可以直接写页面id

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值