springmvc返回参数
创建一个maven项目,导入jar包,在web创建jsp包,包中创建jsp页面
<context:component-scan base-package="com.lanou"></context:component-scan>
<!--内部视图资源解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
/jsp/acount.jsp页面中的内容
this is acount.jsp <br>
<hr>
${username}
返回数据的几种形式
一、通过modelandView返回
http://localhost:8080/arAcount?id=121&username=张三&password=123
@RequestMapping("/arAcount")
public ModelAndView addArAccount(@RequestParam(required = false) Integer id, String username, Double money, ModelAndView modelAndView){
System.out.println(id + "..." + username + "-----" + money);
modelAndView.setViewName("account");//页面
//request返回
modelAndView.addObject("username",username);//返回数据
return modelAndView;
}
二、使用Model对象返回数据
方法返回值 String 代表返回的页面信息 Model中添加传递的数据
http://localhost:8080/backtrack
@RequestMapping("/backtrack")
public String backtrack(Model model){
model.addAttribute("username","周瑜");
return "account";
}
三、使用Map对象返回数据
方法返回值 String 代表返回的页面信息
在acount.jsp页面中加上
${age}
http://localhost:8080/backtrack1
@RequestMapping("/backtrack1")
public String backtrack1(Map<String, Object> map){
map.put("username","小乔");
map.put("age",26);
return "account";
}
四、通过ajax 返回json数据
方法返回值 String 代表返回的json字符串
@RequestMapping(value = "/backtrack2")
@ResponseBody
public String backtrack2(){
return JSON.toJSONString("张三0001");
}
处理中文乱码
JSON乱码
方式一 (produces = “text/json;charset=utf-8”)
出现乱码 “??0001”,可以做如下配置
@RequestMapping(value = "/backtrack2",produces = "text/json;charset=utf-8")
@ResponseBody
public String backtrack2(){
return JSON.toJSONString("张三0001");
}
但这配置只对当前方法有效,其他的还是就会乱码!!!
比如下面这个还是会乱码
//http://localhost:8080/backtrack4
@RequestMapping("/backtrack4")
@ResponseBody
public String backtrack4(){
return JSON.toJSONString("张三0001");
}
方式二 在配置文件中配置
在配置文件中配置
<!-- 解决返回json数据乱码问题-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
<value>application/xml;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
mvc:annotation-driven 注意导入的是这个"http://www.springframework.org/schema/mvc",我刚开始导错了找了半天
POST乱码处理
简单的测试
比如在jsp文件中创建add.jsp
<form action="/arAcount" method="post">
id:<input type="text" name="id" value=""></br>
username:<input type="text" name="username" value=""></br>
money:<input type="text" name="money" value=""></br>
<input type="submit" value="保存账户">
</form>
可以看到会乱码
此时在web.xml中配置
<!--post请求中文乱码问题解决方案-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
此时重启服务器再来运行代码可以看到