Spring MVC
知识点总览:
一 Spring mvc三大角色关系图
二 Spring mvc 请求处理流程图
三 Spring mvc 体系结构
注意:
1 @Controller
用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器.
2 @RequestParam(value = “name”,required =false )
@RequestMapping("hello.form")
public String hello(@RequestParam(value = "name",required =false ) String name){ // //value 参数名 required参数是否必要
System.out.println(name);
return "index";
}
value 参数名 required参数是否必要
**
3 @RequestMapping(value ="/hello.form",method=RequestMethod.GET,params =“name”)
**
@RequestMapping(value ="/hello.form",method=RequestMethod.GET,params ="name")
// value请求url method请求方法 params请求参数
public String hello(String name){
System.out.println(name);
return "index";
}
value请求url method请求方法 params请求参数
4 model.addAttribute("String,“zjw”); //k值 string 可以省略 默认参数使用对象类型作为key
特别注意:el表达式中s小写
@RequestMapping("/hello.form")
public String welcome(Model model){
model.addAttribute("name1","吴彦祖");
model.addAttribute("String,"zjw"); //k值 string 可以省略 默认参数使用对象类型作为key el表达式中s小写
return "index";
}
k值 string 可以省略 默认参数使用对象类型作为key
注意: el表达式中s小写
代码实例:
1创建WEB工程,引入开发的jar包
配置核心的控制器(配置DispatcherServlet)
在web.xml配置文件中核心控制器DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>SpringMVCdemo</display-name>
<welcome-file-list>
<welcome-file> index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:springmvc.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
</web-app>
编写springmvc.xml的配置文件:
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--自动扫描上下文-->
<context:component-scan base-package="cn.zjw.*"></context:component-scan>
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<!--视图解析器>-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--prefix前缀-->
<property name="prefix" value="/"></property>
<!--suffix后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
index.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/3/17
Time: 11:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
长得帅有什么错!
${name}
${name1}
${string}
${pwd}
</body>
</html>
HelloController控制器类
package cn.zjw.domain;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
import java.util.Objects;
// @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器
@Controller //
public class HelloController {
// view视图=======》控制器
// @RequestMapping("/hello.form") //请求找到hello
// public String hello(){
// System.out.println("Hello"); //输出hello
// return "index"; //跳转到index.jsp页面中 默认转发不是重定向
// }
// @RequestMapping("/hello.form")
// public String hello(String name){ //传参就是返回参数值 例如?name=11 返回11 不写后面的则返回null
// System.out.println(name);
// return "index";
// }
// @RequestMapping("/hello.form")
// public String hello(@RequestParam String name){ // //没有传参为400 传参才能显示页面
// System.out.println(name);
// return "index";
// }
// @RequestMapping("hello.form")
// public String hello(@RequestParam(value = "name",required =false ) String name){ // //value 参数名 required参数是否必要
// System.out.println(name);
// return "index";
// }
// 不传参为400
// @RequestMapping(value ="/hello.form",method=RequestMethod.GET,params ="name")
// // value请求url method请求方法 params请求参数
// public String hello(String name){
// System.out.println(name);
// return "index";
// }
// contorller控制器=======>view视图 三种
//方法一 MapAndView
// @RequestMapping("/hello.form")
// public ModelAndView welcome(){
// ModelAndView mv=new ModelAndView();
// mv.addObject("name","帅有什么错");//添加模型数据
// mv.setViewName("index");//设置跳转视图
// return mv;
// }
//方法二 model类型
// @RequestMapping("/hello.form")
// public String welcome(Model model){
// model.addAttribute("name1","吴彦祖");
// model.addAttribute("String,"zjw"); //k值 string 可以省略 默认参数使用对象类型作为key el表达式中s小写
// return "index";
// }
//方法三 map 类型
@RequestMapping("/hello.form")
public String welcome(Map<String,Object> map){
map.put("pwd","6666666"); // 参数pwd 值6666666
return "index";
}
}
运行结果
网址后加?name=”value“ 返回 value值
可以用EL表达式获取参数值