视图解析器
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<!-- 配置视图解析器: 视图解析器将返回的跳转的页面路径进行加工 -->
<!-- 视图解析器的作用是只对Controller类中每个函数返回值那里的String类型前后加路径 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<!-- 前缀和后缀 -->
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<context:component-scan base-package="com.controller"></context:component-scan>
</beans>
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
public String test(){
System.out.println("视图解析器准备运行中.........");
// SpringMVC.xml配置视图解析器;视图解析器会自动为返回的页面路径添加前缀和后缀
return "index";
}
}
SpringMVC对参数的获取
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index</title>
</head>
<body>
<form action="test/test.do" method="post">
帐号 : <input type="text" name="username" /><br/><br/>
密码 : <input type="password" name="password" /><br/><br/>
<input type="submit" />
</form>
</body>
</html>
Servlet获取参数
package com.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/*
* 获取参数
*/
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
public String test(HttpServletRequest request,HttpServletResponse reponse){
// Servlet获取参数
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("帐号:"+username);
System.out.println("密码:"+password);
return "ok";
}
}
SpringMVC多形参获取参数
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/*
* 获取参数
*/
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
public String test(String username,String password){
// SpringMVC多参数获取,形参名必须与页面name值相同
System.out.println("帐号:"+username);
System.out.println("密码:"+password);
return "ok";
}
}
SpringMVC封装对象获取参数
package com.model;
/*
* 用户封装实体类
*/
public class User {
private String username;
private String password;
public User() {
super();
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.model.User;
/*
* 获取参数
*/
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
public String test(User user){
// SpringMVC封装对象获取参数
System.out.println("帐号:"+user.getUsername());
System.out.println("密码:"+user.getPassword());
return "ok";
}
}
SpringMVC指定参数获取
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/*
* 获取参数
*/
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
// @RequestParam注解设置指定参数(不可变),形参名可变
// 指定参数获取,参数名必须与页面name值对应,否则会报错;其他方式不会报错,会返回null
public String test(@RequestParam("username")String name,@RequestParam("password")String pwd){
// SpringMVC注解指定参数获取
System.out.println("帐号:"+name);
System.out.println("密码:"+pwd);
return "ok";
}
}
ModelAndView
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/*
* ModelAndView:添加数据和设置跳转的页面
*/
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
public ModelAndView test(String username,String password){
// 创建模型视图
ModelAndView mav = new ModelAndView();
// 添加模型数据:可以在页面通过key获取value的值
mav.addObject("username", username);
mav.addObject("password", password);
// 设置视图:页面会根据此进行跳转
mav.setViewName("ok");
// 返回视图模型
return mav;
}
}
SpringMVC写出JSON
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/*
* ModelAndView
*/
@Controller
@RequestMapping("/test")
public class TestResolver {
@RequestMapping("/test.do")
// 返回JSON字符串
// 在方法返回类型前面添加@ResponseBody注解或在方法上面添加注解;声明返回的是json
public @ResponseBody void test(HttpServletResponse response) throws IOException{
// 获取响应输出流
PrintWriter out = response.getWriter();
// json字符串
String json="[{'name':'Micro','age',18},{'name':'Myth','age':23}]";
// 写出json字符串
out.write(json);
}
}