第八章 SpringMVC进阶

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/Mythology_px/article/details/82912571

视图解析器

<?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);		
	}
}

猜你喜欢

转载自blog.csdn.net/Mythology_px/article/details/82912571