全网最实用详解: SpringMVC入门

今天,进行新篇章,煌sir 带你get到SpringMVC快速入门吧,话不多说,开干!!!

SpringMVC-入门

一. 简述

Spring web mvc是表现层(WEB层)的框架,它是Spring框架的一部分。

替代(servlet)

全网最实用详解: SpringMVC入门

访问springMVC的web层: xxx.action

核心控制器:相当于BaseServlet

Controller:相当于servlet

核心控制器:控制当前请求发送给哪个Controller

​ 控制当前响应跳转到哪个JSP

接下来,直接上操作, 安排!!!

二. 入门案例1:HelloWorld

1、创建maven-webapp项目,导入pom.xml,修改xml中的项目名,创建java和resources。

web.xml替换3.1版本,配置tomcat环境

全网最实用详解: SpringMVC入门

2、创建package包, 导入配置类

全网最实用详解: SpringMVC入门

3、定义Controller ,检查当前控制器是否被spring扫描

Demo1Controller

/**
** Controller:标明当前类是一个控制器*
** RequestMapping:配置当前控制器 在浏览器上的访问路径*
/
@Controller
@RequestMapping(
"/d1"*)

public class Demo1Controller {

}

代码实现

全网最实用详解: SpringMVC入门

demo1.jsp

全网最实用详解: SpringMVC入门

Demo1Controller

/**
** Controller:标明当前类是一个控制器*
** RequestMapping:配置当前控制器 在浏览器上的访问路径*
/
@Controller
@RequestMapping(
"/d1"*)

public class Demo1Controller {

​ @RequestMapping("/run1")
public String run1(){
​ System.out.println(“helloWorld”);
return “/hello.jsp”;
​ }
}

hello.jsp

<h1>hello</h1>

EL表达式未解析BUG说明

web.xml若为2.x版本,EL表达式在springMVC中未解析

解决方案:把web.xml版本替换成3.x以上即可

入门总结【重点】

项目启动加载的流程图:

全网最实用详解: SpringMVC入门

发送请求的流程图:

全网最实用详解: SpringMVC入门

传统Web项目中,程序的入口是web.xml文件。

在spring中提供WebApplicationInitializer接口,表示服务器启动初始化。也就是说接口实现类中编写的内容,就是web.xml文件中配置的内容。

类或方法 描述
AnnotationConfigWebApplicationContext WEB环境下spring工厂
servletContext.addFilter(name , Class) 添加过滤器,等效
servletContext.addServlet(name , Class) 添加servlet,等效
过滤器相关方法 ServletRegistration.Dynamic 描述
addMapping(urlPatterns) 追加过滤路径
setLoadOnStartup(int) 设置启动顺序

三. 入门案例2:请求转发并传递request作用域数据【重点】

流程图

全网最实用详解: SpringMVC入门

代码实现-方式一(springMVC独有)

Demo1Controller

@RequestMapping("/run2")
public String run2(Model model){
System.out.println(“run2”);
//向request作用域设置键值对
model.addAttribute(“uname”,“老煌”);
//请求转发
return “/demo2.jsp”;
}

demo2.jsp

<h1>${uname}</h1>

代码实现-方式二(springMVC支持的)

Demo1Controller

@RequestMapping("/run2_2")
public String run2_2(HttpServletRequest request){
System.out.println(“run2”);
//向request作用域设置键值对
request.setAttribute(“uname”,“老煌”);
//请求转发
return “/demo2.jsp”;
}

demo2.jsp

<h1>${uname}</h1>

小结:

Controller的方法上可以填写Model或者HttpServletRequest的参数,

方法执行时,Spring会自动为参数赋值(IOC注入)。

建议:两者都完全掌握

request****对象可以获取session和servletContext对象

request.getSession()****;

request.getServletContext():

三. 入门案例3:重定向【重点】

流程图

全网最实用详解: SpringMVC入门

代码实现

Demo1Controller:

@RequestMapping("/run3")
public String run3(){
System.out.println(“run3”);
return “redirect:/demo3.jsp”;
}

代码总结

内网:redirect:/资源名

外网:redirect:http://网址

全网最实用详解: SpringMVC入门

代码修改:重定向并传递session作用域数据

需求:

Run3方法向session存储键值对

demo3.jsp在session中获取键值对

方式一:

Demo1Controller:

@RequestMapping("/run3_1")
public String run3_1(HttpServletRequest request){
System.out.println(“run3_1”);
//向session中保存键值对
request.getSession().setAttribute(“uname”,“老王”);
return “redirect:/demo3.jsp”;
}

demo3.jsp

<h1>demo3—${uname}</h1>

方式二:

Demo1Controller:

@RequestMapping("/run3_2")
public String run3_2(HttpSession session){
System.out.println(“run3_1”);
//向session中保存键值对
session.setAttribute(“uname”,“老王”);
return “redirect:/demo3.jsp”;
}

demo3.jsp

<h1>demo3—${uname}</h1>

今日总结:

springMVC:spring框架的一部分,web层框架

核心控制器(前端控制器):

  1. 判断运行哪个Controller
  2. 判断跳转哪个JSP页面

*.action

@Controller:标记当前类是一个控制器,把当前类交给spring管理。

@RequestMapping:用来为当前类/方法 设置访问路径 /

方法参数:

Model : addAttribute()

HttpServletRequest: setAttribute()

HttpSession

SpringMVC跳转:

return “/路径”; 请求转发

return “redirect:/路径”; 重定向

return “redirect:http://网址”; 重定向

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多!

~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!