标签:rop stl red 不同 XML 方法参数 ada 架构 and
目录
注解有哪些?
注解形控制器
package com.ht.web; ... @Controller // 1.将UserController变成一个Handler @RequestMapping(“/user”) //2.指定控制器映射的URL,限定了只有 /user/** 能进来 public class UserController { @RequestMapping(value = “/register”) //3.处理方法对应的URL,相对于 //2处的URL。只有/user/register能进来 public String register() { return “user/register”; //4返回逻辑视图名 } }
开发步骤
1.配置Spring-web.xml配置文件
<!--1,开启springmvc注解模式 a. 自动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter b. 默认提供一系列的功能:数据绑定,数字和日期的format@NumberFormat,@DateTimeFormat c. xml,json的默认读写支持--> <mvc:annotation-driven/> <!--2.静态资源默认servlet配置--> <!-- 1).加入对静态资源处理:js,gif,png 2).允许使用 "/" 做整体映射 --> <mvc:default-servlet-handler/> <!--3:配置JSP 显示ViewResolver--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 映射视图路径 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 映射视图后缀 --> <property name="suffix" value=".jsp"/> </bean> <!--4:扫描web相关的controller控制器--> <context:component-scan base-package="com.ht.web"/>
2.WEB-INF/JSP/hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello World</title> </head> <body> ${message} </body> </html>
3.编写控制器 com.ht.web.HelloWorldController
package icom.ht.web.HelloWordController; import javax.servlet.http.HttpServletRequest; import java.util.Map; /** * Created by shkstart on 2019/9/24 */ @Controller @RequestMapping("/user") public class UserController { @RequestMapping(value = "/hello") //请求URL到处理器功能处理方法的映射 public String helloWorld(ModelMap map) { map.put("message","hello word!"); //把参数放置到 request中 return "hello"; //返回显示的视图 } }
4.web.xml 配置
<?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_4_0.xsd" version="4.0"> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化配置参数 --> <init-param> <description>SpringMVC</description> <param-name>contextConfigLocation</param-name> <!--指定springmvc配置文件路径 --> <param-value>classpath:spring/spring-web.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 拦截所有请求 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
5.运行项目
@Controller 注解介绍
@RequestMapping 注解介绍
-- 类定义处:提供初步的请求映射信息。相对于WEB 应用的根目录
-- 方法处:提供进一步的细分映射信息。相对于类定义处URL。若类定义处未标注
@RequestMapping 注解参数
Map、Model、ModelMap、ModelAndView
package icom.ht.web.HelloWordController; import javax.servlet.http.HttpServletRequest; import java.util.Map; /** * Created by shkstart on 2019/9/24 */ @Controller @RequestMapping("/user") public class UserController { @RequestMapping(value = "/hello") //请求URL到处理器功能处理方法的映射 public String helloWorld(ModelMap map) { map.put("message","hello word!"); //把参数放置到 request中 return "hello"; //返回显示的视图 } /** * 使用map,Model,ModelMap 向页面传值 * @param model org.springframework.ui.Model * @param model2 java.util.Map * @param model3 org.springframework.ui.ModelMap * @return */ @RequestMapping(value = "/modelMap") public ModelAndView modelMap(Model model, Map model2, ModelMap model3){ model.addAttribute("model","1"); model2.put("map","2"); model3.put("modelmap","3"); ModelAndView mv = new ModelAndView(); mv.addObject("ModelAndView","4"); mv.setViewName("modelMapTest"); return mv; } }
测试页
modelMapTest.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>测试map,Model,ModelMap</title> </head> <body> model:${model}<br> map:${map}<br> modelmap:${modelmap}<br> ModelAndView:${ModelAndView}<br> </body> </html>
Map、Model、ModelMap、ModelAndView 四者的区别
四者作用大同小异,主要都是用来将数据传输到视图层上,最大的区别是
SpringMVC参数绑定
@RequestParam
1.HttpServletRequest中获取参数
/** * 从request中获取参数 * @param request * @return */ @RequestMapping(value = "/basicData1") public String basicData1(HttpServletRequest request,ModelMap map){ //获取request中的参数 String str = (String) request.getParameter("str"); System.out.println("---从request中获取参数--->>"+str); map.put("message",str); return "hello"; }
可以看到获取到了ht
2.@RequestParam 参数绑定
/** * 使用RequestParam 注解绑定参数 * value:绑定参数名称,浏览器端 name 的名称 * required:客户端是否必须填写,如果为false,且有默认时,不传参不会报错 * 如果为true,且没有默认时,不传参会报400 Required String parameter ‘username‘ is not present 的错 * defaultValue:默认值,如果未填写,则自动赋默认值 * @param name * @return */ @RequestMapping(value = "/basicData2") public String basicData2(@RequestParam(value = "username",required = false,defaultValue = "张三") String name,ModelMap map){ map.put("message",name); System.out.println("------>>"+name); return "hello"; }
3.默认传参
/** * 默认绑定方法:数据类型包括:Integer、Long、Byte、Double、Float、Short、String */ @RequestMapping(value = "/basicData3") public String basicData3(String name,int age,Double height){ System.out.println("----姓名-->>"+name); System.out.println("----年龄-->>"+age); System.out.println("----身高-->>"+height); return "hello"; }
可以看到后台输出
4.PathVariable
/** * {×××}占位符, 请求的 URL 可以是 “/ basicData4 /123456” 或 “/ basicData4 /abcd” * @param userId * @param map * @return */ @RequestMapping(value="/basicData4/{userId}") public String basicData4(@PathVariable("userId")String userId, ModelMap map){ System.out.println("---绑定参数-->>"+userId); map.put("message",userId); return "hello"; }
通过@PathVariable 可以将URL中占位符参数绑定到控制器处理方法中:URL中{xxx} 占位符可以通过@PathVariable(“xxx”)绑定到操作方法入参中
5.普通的POJO对象绑定请求参数
/** * POJO 对象数据的绑定 * @param role * @return */ @RequestMapping(value="/basicData5") public String basicData5(Role role){ System.out.println("-----角色名:"+role.getName()); System.out.println("-----用户名:"+role.getUser().getName()); return "hello"; }
public class Role{ private String id; private String name; //角色名 private Integer userId; //所属用户 private User user; //set,get方法 }
//用户实体类 public class User{ private Intrger age; private String name; //set,get方法 }
http://localhost:8080/demo2/basicData5?name=roleName&user.name=lwb
结束!
标签:rop stl red 不同 XML 方法参数 ada 架构 and
原文地址:https://www.cnblogs.com/268lwc/p/11644220.html