一、基本操作
1、响应请求的方式
响应方式 | 说明 |
---|---|
不响应 | void+@ResponseBody注解 |
ModelAndView | 通过setViewName方法 |
直接指定响应页面 | 返回值为String类型,返回结果指定跳转地址 |
重定向 | 跳转地址前加redirect: 前缀即可 |
HttpServletRequest和HttpServletResponse | 形参中声明这两个变量,然后通过相关api跳转 |
2、案例
1、后台代码:
@Controller
public class HelloController {
@RequestMapping("/h1")
@ResponseBody
public void hello(Integer id, String name, String address, String[] hobby) {
for (String string : hobby) {
System.out.println(string);
}
}
/**
* 接收前端页面传来的数据
* @param user
*/
@RequestMapping("/h2")
@ResponseBody
public void user(User user) {
System.out.println(user);
}
/**
* 返回一个真的字符串
* @return
*/
@GetMapping("/hello")
@ResponseBody
public String hello2() {
return "hello";
}
/**
* 返回一个要跳转页面的名称,跳转到页面
* @return
*/
//@GetMapping("/index")
@RequestMapping(name = "index",method =RequestMethod.GET)
public String hello3() {
return "hello2";
}
@GetMapping("/index2")
public String hello4() {
return "redirect:hello2";
}
/**
* 响应数据到前端
* @param user
* @param model
* @return
*/
@RequestMapping("/query")
public String query(User user,Model model) {
user.setId(101);
user.setName("张三");
user.setBirth(new Date());
user.setAddress("sz");
user.setStr(new String[]{"d","dd","rr"});
user.setCat(new Cat(12,"huahua","baise"));
List<String> list = new ArrayList<String>();
list.add("cs");
list.add("gg");
user.setList(list);
model.addAttribute("msg", user);
return "user2";
}
}
2、前端页面
前端form表单提交数据:
<body>
<h1>信息录入</h1>
<form action="h2" method="post">
<table>
<tr>
<td>编号:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>姓名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>地址:</td>
<td><input type="text" name="address"></td>
</tr>
<tr>
<td>出生日期:</td>
<td><input type="date" name="birth"></td>
</tr>
<tr>
<td>破游戏:</td>
<td><input type="checkbox" name="str" value="cs">CS</td>
<td><input type="checkbox" name="str" value="lol">LOL</td>
<td><input type="checkbox" name="str" value="csgo">CSGO</td>
</tr>
<tr>
<td>集合:</td>
<td><input type="checkbox" name="list" value="cs1">CS11</td>
<td><input type="checkbox" name="list" value="lol1">LOL11</td>
<td><input type="checkbox" name="list" value="csgo1">CSGO11</td>
</tr>
<tr>
<td>猫咪编号:</td>
<td><input type="text" name="cat.id"></td>
</tr>
<tr>
<td>猫咪姓名:</td>
<td><input type="text" name="cat.name"></td>
</tr>
<tr>
<td>猫咪颜色:</td>
<td><input type="text" name="cat.color"></td>
</tr>
<tr>
<td><input type="submit" name="提交"></td>
</tr>
</table>
</form>
</body>
前端接收数据:
<body>
<h1>信息响应</h1>
<table>
<tr>
<td>编号:</td>
<td>${msg.id}</td>
</tr>
<tr>
<td>姓名:</td>
<td>${msg.name}</td>
</tr>
<tr>
<td>地址:</td>
<td>${msg.address}</td>
</tr>
<tr>
<td>出生日期:</td>
<td>${msg.birth}</td>
</tr>
<tr>
<td>数组:</td>
<c:forEach items="${msg.str }" var="str">
<td>${str }</td>
</c:forEach>
</tr>
<tr>
<td>集合:</td>
<c:forEach items="${msg.list }" var="list">
<td>${list }</td>
</c:forEach>
</tr>
<tr>
<td>猫咪编号:</td>
<td>${msg.cat.id }</td>
</tr>
<tr>
<td>猫咪姓名:</td>
<td>${msg.cat.name }</td>
</tr>
<tr>
<td>猫咪颜色:</td>
<td>${msg.cat.color }</td>
</tr>
</table>
</body>
3、xml配置文件
<!-- 配置Spring MVC -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 处理请求响应数据乱码问题 -->
<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>forceRequsetEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4、测试结果
后台接收数据测试:
前台数据接收数据测试: