SSM前后台传数据快速回顾笔记

在这里插入图片描述

配置springMVC

  在maven工程中的pom文件中加入依赖:

Spring的jar包:spring-core spring-bean spring-aop spring-context spring-web
使用springMVC只需另外加入一个包:spring-webmvc

  在服务器配置文件web.xml中添加dispatcher-servlet,并使其自动启动,并配置其配置文件路径。这样让所有的请求都通过dispatcher-servlet,而不用每个servlet都在web.xml中建立class和mapping配置项。
  在springMVC配置文件中添加注解驱动并指定注解扫描包,扫描包一般设为控制器层的包,控制器层命名可以是Com.xxx.servlet或者com.xxx.controller或com.xxx.handler或com.xxx.action,里边包含@controller或@RequestMapping等控制器层的注解,添加包扫描路径使springMVC有能力帮助我们完成找到@controller并把类当成servlet处理等这样的功能。
  在springMVC配置文件中添加InternalResourceViewResolver,因为我们一般在控制器层的返回值里直接写jsp的名字,这个解析器可以帮我们添加前后缀并找到相应的视图。

网页跳转功能

  在任意可访问的网页中的跳转组件如或者按键的地址栏中写入想跳转的地址,在控制器层添加接收方法,首先使用@controller将类描述为控制器,使用@RequestMapping指定用于接收的地址,使请求跳转到指定的方法(返回值为String),返回jsp名字的字符串,InternalResourceViewResolver会帮助找到jsp文件并返回。
  RequestMapping映射地址可以相同,此时我们可以动过RequestMapping中的method参数指定是处理哪种请求。

前台—>—数据—>—后台

  传统方法:以前传输数据可以通过在地址栏最后写 ?[name]=[value]或者通过表单发值,然后在servlet通过req.getparamater得到参数。
  新方法:
  使用注释获取指定属性名的属性或者地址栏中的指定字段。或者在控制器方法参数里写一个用于接收属性的对象,或者在控制器方法参数里写一个servlet的req或者res。SpringMVC都可以帮助我们接收我们想要的参数并注入参数。
  ①我们使用地址栏传值
  如果想传一个字符串“zgx”给后台,可以通过直接在地址栏中一个字段写上要发送的内容:

<a href="/test/zgx">发送zgx给后台</a>

  这样通过以下语句就可以可以在控制层接收数据:

    @RequestMapping("/test/{name}")
    public String getName(@PathVariable("name") String name){
        System.out.println(name);
        return "r";
    }

  @RequestMapping将zgx这个字符串给了name这个变量,并配合@PathVariable将name变量赋给参数传进方法。
  ②通过表单传送值或对象
  如果我们的值是通过表单传到后台的,可以通过@RequestParam接收参数。
Jsp:

<form action="/test1" method="post">
    <input name="param1" type="text">
    <input type="submit" value="发送">
</form>

控制层:

    @RequestMapping("/test1")
    public String getParam(@RequestParam("param1") String name){
        System.out.println(name);
        return "r";
}

  多个@RequestParam可以接收多个参数,也可以在RequestParam的参数列表里将required参数改为false将其指定为非必要参数。
  当我们向后台传送一个的表单的name属性是一个对象的属性名时,可以通过在一个控制器层的方法参数里直接用对象接收,并且支持级联,也就是如果对象的属性里有其他对象,也可以把其他对象的属性也封装进来。记得类属性加getter setter方法。

  ③后台直接获取其他信息
  通过@RequestHeader直接获取请求头信息。

@RequestMapping("/test2")
    public String getOtherParam(@RequestHeader("Accept-Language") String name){
        System.out.println(name);
        return "r";
}

  如每个客户端和服务器通信时,服务器会为客户端创建一个session,并有一个sessionID,并把sessionID发送到客户端作为一个JsessionID,以保持每次本网页请求能使用这一个session。
  通过@CookieValue得到Jsessionid:

    @RequestMapping("/test3")
    public String getOther(@CookieValue("JSESSIONID") String name){
        System.out.println(name);
        return "r";
    }

后台—>—数据—>—前台

  后台想把数据传到传到前端,需要定义一个返回类型为View或String或modelAndView的方法,但无论传什么数据,dispatchedsevlet默认都会将视图编程ModelAndView格式并返回。
  如果想把数据(Model)和视图(View)传给前台,我们可以通过以下方式:

ModelAndView、ModelMap、Map、Model、@SessionAttributes、@ModelAttribute

  ①ModelAndView
  控制器方法为一个返回值为ModelAndView的方法,在方法中创建ModelAndView的实例并返回,我们只需要给ModelAndView的实例添加数据和视图。
  添加视图:ModelAndView有一些构造方法,比如直接传字符串进去就是指定view。也可以使用setView方法设置视图。
  添加数据:ModelAndView实例可以添加键值对,使用addObject方法即可。

@Controller
@RequestMapping("/")
public class httpController {
    @RequestMapping("checkUser")
    public ModelAndView checkUser(Student student){
        ModelAndView modelAndView = new ModelAndView("ret");
        modelAndView.addObject("Student",student);
        return modelAndView;
    }
}

  接收数据:在jsp中可以直接通过el语句得到数据。注意使用el表达式应该在jsp页面头加上<%@ page isELIgnored=“false”%>

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>返回界面</title>
</head>
<body>
    ${requestScope.get("Student").id} -
    ${Student.id} -
    ${Student.name} -
</body>
</html>

  ②ModelMap、Map、Model
  使用这些方法的返回值为String,也就是这些方法只需要携带数据。

@RequestMapping("test1")
    public String testModelMap(Student student, ModelMap mm){
        mm.addAttribute("Student",student);
        return "ret";
    }

    @RequestMapping("test2")
    public String testMap(Student student, Map map){
        map.put("Student",student);
        return "ret";
    }

    @RequestMapping("test3")
    public String testModel(Student student, Model model){
        model.addAttribute("Student",student);
        return "ret";
    }

  以上方法是通过request域来传送数据,如果想通过session传送数据,可以使用@sessionAttributes
  命令如下:
  @SessionAttributes(“student”)
  上述注解的意思是如果把名字为student的对象被放进request中,则同时放一份进入session中。
   还以一种命令:
  @SessionAttributes(type={Student.class,Address.class}
  上述注解的意思是如果有Student或Address类型的对象放进request,则同时放进session
  接收时通过el表达式时在表达式前写上sessionScope就可以指定接收session中的数据库。

  @ModolAttribute注解
  这个注解可以将@ModelAttribute修饰的方法先执行,也就是每次请求前都执行它修饰的代码。并将方法参数中的map对象放入的Model对象给需要的方法一份,给的前提是map的key值应该是类名的首字母小写。

静态资源解析器:

  如果想直接通过url请求服务器中的一张图片,如果不设置的情况下,所有请求都会通过dispatchedservlet去当做一个requestMapping中的url去寻找,就找不到网页。
  解决办法:配置一个静态资源解析器,这样会对MVC配置的映射交给springMVC处理,如果没有,则交给tomcat默认的servlet来处理。Servlet的规则是如果没配置url,则按照静态资源来处理。
  mvc:default-servlet-handler/要配合<mvc:annotation-driven />使用

前台不通过controller直接跳转

  如果在mvc配置文件中添加如下一句,则当收到jump的请求时会直接跳转到名字为ret的jsp界面。
  <mvc:view-controller path="/jump" view-name=“ret”/>
  使用这种语句一点要加入注解驱动<mvc:annotation-driven />这样才能使上面的注解跳转和普通controller共存。

HiddenHttpMethodFilter

  网页请求有四种类型:GET查、POST增、DELETE删、PUT改。
  但是一般浏览器不支持DELETE和PUT,所以我们需要在服务器配置文件web.xml添加一个过滤器,这个过滤器对满足以下两条规则的请求作用,将其改变为DELETE或PUT请求。
  1, 是post请求。
  2, <input type=”hidden” name=”_method” value=”delete/put” />
符合这种要求的请求,由HiddenHttpMethodFilter改变请求类型。

CharacterEncodingFilter

  在web.xml中配置字符编码过滤器可以将前台传到后台的中文字符正确显示。

其他知识点

  默认的网页请求方式为get,如果不指定,就是get。
  Ant风格:通配符*代表任意0个或多个字符,?代表一个字符,**代表0层或多层任意目录。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[ 2021年,将Spring全家桶的课程进行Review,确保不再有顺序错乱等问题导致学员看不懂内容,进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并开始逐步增加高阶的Spring Security等内容,课件将逐步进行上,敬请期待! ]本课程是Spring全家桶案例精讲课程的第二部分Spring MVC,Spring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Java Spring的Web知识点,主要是关于Spring MVC的应用,包含:表单的增删改查、国际化、过滤器、拦截器、日志Log4j2及slf4j的使用、主题更改网站皮肤及样式、文件上等的案例讲解,并且最后以一个SSM(Spring+Spring MVC+Mybatis)贯穿后台的案例作为Spring MVC课程的终奖, 从而使大家快速掌握Spring的基础核心知识,快速上手,为面试、工作等做好充足准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。 【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVC、Spring Boot、Spring Cloud及Spring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力  【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验 【本课程适用人群】如果你是一定不要错过!  适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值