MVC设计模式:
MVC流程:
SpringMVC:
SpringMVC详解:
SpringMVC实现流程:
SpringMVC深入使用:
SpringMVC--基于XML配置:
1、创建一个maven web工程:并在pom.xml里导入依赖
junit
junit
4.8.1
test
javax.servlet
javax.servlet-api
3.1.0
org.springframework
spring-webmvc
4.3.1.RELEASE
在web.xml配置前置控制器:
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
SpringMVC
/
springmvc.xml:配置请求和相应的处理操作,根据请求配置相应Handler和jsp页面.
testHandler
MyHandler:
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class MyHandler implements Controller {
@Override
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
//装载模型数据和逻辑视图
ModelAndView modelAndView = new ModelAndView();
//添加模型数据
modelAndView.addObject("name","TOM");
//添加逻辑视图
modelAndView.setViewName("show");
return modelAndView;
}
}
show.jsp:test请求都有本页面进行显示。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
Title
hello ${name}.
测试:访问 http://localhost:8080/SpringMVCTest/test
输出结果:
SpringMVC--基于注解:
AnnotationHandler: 配置注解Handler
package com.imooc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//基于注解的方式,不需要实现Controller类
//设置其为控制器
@Controller
public class AnnotationHandler {
/**
* 业务方法:ModelAndView完成数据的传递,视图的解析
*/
//设置匹配的请求
@RequestMapping("/AnnotationTest")
public ModelAndView modelAndViewTest(){
//创建ModelAndView对象
//装载模型数据和逻辑视图
ModelAndView modelAndView = new ModelAndView();
//添加模型数据
modelAndView.addObject("name","Jack");
//添加逻辑视图
modelAndView.setViewName("show");
return modelAndView;
}
}
在springmvc.xml配置,实现自动扫描功能,将注解Handler添加到IOC容器中:
测试:访问 http://localhost:8080/SpringMVCTest/AnnotationTest
输出结果:
注解实现的业务方法2:Model传值,String进行视图解析
AnnotationHandler:
package com.imooc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
//基于注解的方式,不需要实现Controller类
//设置其为控制器
@Controller
public class AnnotationHandler {
/**
* 方法2:
* 业务方法:Model传值,String进行视图解析
*/
@RequestMapping("/ModelTest")
public String ModelTest(Model model){
//填充模型数据
model.addAttribute("name","jerry");
//设置逻辑视图
return "show";
}
}
输出结果:
注解实现的业务方法3:
Map传值,String进行视图解析
AnnotationHandler:
package com.imooc.handler;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
//基于注解的方式,不需要实现Controller类
//设置其为控制器
@Controller
public class AnnotationHandler {
/**
* 方法3:
* 业务方法:Map传值,String进行视图解析
*/
@RequestMapping("/MapTest")
public String MapTest(Map map){
//填充模型数据
map.put("name","cat");
//设置逻辑视图
return "show";
}
}
输出结果:
案例展示:处理前台添加商品,并将其显示到页面上
Goods实体类:
package com.imooc.entity;
/**
* Created by Administrator.
*/
public class Goods {
private String name;
private double price;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public double getPrice(){
return this.price;
}
public void setPrice(double price){
this.price = price;
}
}
add.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
add
AnnotationHandler:
package com.imooc.handler;
import com.imooc.entity.Goods;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
//基于注解的方式,不需要实现Controller类
//设置其为控制器
@Controller
public class AnnotationHandler {
/**
* 添加商品并展示
*/
@RequestMapping("/addGoods")
public ModelAndView addGoods(Goods goods){
System.out.println(goods.getName()+"---"+goods.getPrice());
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("goods",goods);
modelAndView.setViewName("show");
return modelAndView;
}
}
在web.xml配置其中文乱码和静态资源的正常使用:
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
default
*.css
输出结果:
总结: