1. springmvc简介
- 1.1springmvc是什么
- springmvc是spring框架的一个模块。
- Spring WebMVC是基于Servlet API构建的原始Web框架
- 从一开始就包含在Spring框架中。
- springmvc是基于一个mvc设计模式的web框架。
- 为什么要使用springMVC?
- MVC设计模型
- springMVC的强大之处
- springMVC优势
- springMVC的运行原理
- Springmvc运行原理流程
- 组件说明
- 视图解析器
以上参考:https://www.cnblogs.com/fengru/p/5730174.html
2. springmvc开发步骤
- 新建Dynamic Web Project
- 添加springmvc所依赖的jar包
- 在项目的src下添加springmvc配置文件
springmvc-servlet.xml
- 修改web.xml文件,在web.xml文件中增加DispatcherServlet配置
<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:springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 新建Controller类
@Controller
public class PrintDateController {
@RequestMapping(value="/printDate")
public String printDate(HttpServletResponse response) throws IOException{
response.getWriter().println(new Date());
return null;
}
}
- 测试
http://localhost/SpringMVC_001/printDate
显示:Mon Apr 22 17:24:18 CST 2019
3. controller方法的返回值类型
controller方法的返回值类型包括:
1.ModelAndView
2.String
3.void
@Controller
public class MethodReturnTypeController {
//类型1:返回为对象类型
@RequestMapping(value="/modelAndView")
public ModelAndView modelAndView(){
//创建ModeAndView对象
ModelAndView mv=new ModelAndView();
//ModeAndView的存储范围和request一样
mv.addObject("hill", "hello");
//设置逻辑视图名 真正的视图名://WEB-INF/jsp/hello.jsp
mv.setViewName("hello");
return mv;
}
//类型2:返回为String类型
@RequestMapping(value="/returnStringForWard")
public String returnStringForWard(){
//return "forward://WEB-INF/jsp/hello.jsp";
return "forward:index.jsp";
}
//当注解中只有一个value值,可以直接写url地址值
@RequestMapping("/returnStringRedirect")
public String returnStringRedirect(){
return "redirect:index.jsp";
}
@RequestMapping("/returnStringViewName")
public String returnStringViewName(){
//hello是逻辑视图,真正视图是://WEB-INF/jsp/hello.jsp
return "hello";
}
//类型2:返回为void类型
@RequestMapping("/returnVoidForWard")
public void returnVoidForWard(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
request.getRequestDispatcher("index.jsp").forward(request,response);
}
@RequestMapping("/returnVoidRedirect")
public void returnVoidRedirect(HttpServletResponse response) throws IOException{
response.sendRedirect("index.jsp");
}
@RequestMapping("/returnVoidJson")
public void returnVoidJson(HttpServletResponse response) throws IOException{
//创建用户对象
User user = new User();
user.setId(1);
user.setUsername("admin");
user.setPassword("admin");
response.getWriter().println(JSONObject.fromObject(user).toString());
}
}
4. 参数绑定
参数绑定指的是将请求参数中的值绑定到controller方法参数的过程。
参数绑定支持的数据类型包括:
默认数据类型:HttpServletRequest、HttpServletResponse、HttpSession、
Model/ModelMap:ModelMap是Model接口的实现类
Model:模型,保存数据的对象就是Model,可以将Model当成一个和request session一样的容器
- 1.基础数据类型 byte short int long char boolean float double
- 2.基础数据类型的封装类 Byte Short Integer Long Character Boolean Float Double
- 3.String
public String paramBinding(String code, String name, Double price, Integer count, Integer status,String description){
System.out.println(code + "\t" + name + "\t" + price + "\t" + count + "\t" + status + "\t" + description);
return null;
}
- 4.自定义java类型
@RequestMapping("/paramBindingDefaultType")
public String paramBindingDefaultType(HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model){
String code = request.getParameter("code");
String name = request.getParameter("name");
System.out.println("code"+"\t"+"name");
model.addAttribute("code", code);
model.addAttribute("name", name);
return "forward:index.jsp";
}
- 5.自定义java类型的封装类
@RequestMapping("/paramBindingPackType")
public String paramBindingPackType(Product product,Model model){
model.addAttribute("product", product);
return "forward:index.jsp";
}
@RequestMapping("/paramBindingPackObjectType")
public String paramBindingPackObjectType(Order order,Model model)