博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc
阅读量:5031 次
发布时间:2019-06-12

本文共 4708 字,大约阅读时间需要 15 分钟。

有点类似struts

1.建立动态工程后,导入包

在WEB-INF目录下创建 web.xml

配置Spring MVC的入口 DispatcherServlet,把所有的请求都提交到该Servlet
注意:springmvc
springmvc这个名字在下一步会用到

springmvc
org.springframework.web.servlet.DispatcherServlet
1
springmvc
/

2.创建springmvc-servlet.xml

1175089-20180530223649457-1341763541.png

indexController

3.控制类 IndexController

1175089-20180530230232859-244154743.png

package controller; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller; public class IndexController implements Controller {    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {        ModelAndView mav = new ModelAndView("index.jsp");        mav.addObject("message", "Hello Spring MVC");        return mav;    }}

4.准备index.jsp

1175089-20180530230310068-733432528.png

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8" isELIgnored="false"%> 

${message}

1175089-20180530231755390-657699552.png

原理图

1175089-20180530231848786-1743196094.png

笔记

implements Controller,这个很像以前javaweb中的servlet , 负责转发,传达信息

视图定位

1175089-20180531174850292-1830728490.png

1175089-20180531174833866-373372036.png

1175089-20180531175433565-1561945534.png

1175089-20180531175600409-1364860149.png

1175089-20180531175847668-920223257.png

意义

1175089-20180531175934909-635075514.png

注解

1175089-20180531180949588-469715595.png

1175089-20180531181328530-1912315154.png

1175089-20180531182148123-1442716307.png

1175089-20180531182308699-1989821385.png

学习SpringMVC不需要深入了解xml,会用就可以了

=====================================

参数

1175089-20180601092326189-927969325.png

package controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import pojo.Product;@Controllerpublic class ProductController {//  控制器ProductController,准备一个add方法映射/addProduct路径//  为add方法准备一个Product 参数,用于接收注入//  最后跳转到showProduct页面显示用户提交的数据    @RequestMapping("/addProduct")    public ModelAndView add(Product product) throws Exception{        ModelAndView mav = new ModelAndView("showProduct");        return mav;    }}

重点

注: addProduct.jsp 提交的name和price会自动注入到参数 product里

注: 参数product会默认被当做值加入到ModelAndView 中,相当于:mav.addObject("product",product);

1175089-20180601093147466-1472764837.png

个人笔记: JSP中的 name="name" name="price" 提交到

。在ProductController 那边, addProduct.jsp 提交的name和price会自动注入到方法参数 product里 。然后,参数product会默认被当做值加入到ModelAndView 中,相当于:mav.addObject("product",product);**,也相当于以前的那个request.setatttribute("XX",hello);

springMVC好强大啊 , form 表单 不用get 或者 post 都能接收参数

一堆 product 傻傻分不清楚,${product} 从何而来,抛砖引玉为大家解惑

绝大部分疑问都是围绕 ${product} 这个 product 到底是哪儿来的,看了站长的回答,其实是有些问题的。我自己一开始也是一脸懵逼的,经过多次实验以及google,给大家讲一下吧:如果按照教程好好学过来,大家应该都知道,EL 表达式中的参数应该是来自于 addObject("abc",xxx) 中的第一个参数 abc站长说的半对半错,他告诉你们参数 product 会默认被当做值加入到 ModelAndView 中但是没有说,这只是 addObject() 第二个参数的来历,有疑问的其实更关心第一个参数,也就是我们 EL 表达式中要用到的这个 "product" 从何而来:)一句话,大家就能明白:add()方法的【参数类型】会自动转小驼峰并加入到 ModelAndView 中作为 addObject() 的【第一个参数】,相当于 addObject("theFirstParam", product);综上:addObject 里第一个参数是根据 add() 的参数类型自动转成小驼峰命名,第二个参数是 add() 的参数名。区分命名,举个极端的栗子就明白了,这里代码看的不爽点上面【代码】到那里看bean:public class MyFuckingProduct {...};controller:public ModelAndView add(MyFuckingProduct 随便写我写中文应该没人发现吧) {...}jsp:${myFuckingProduct.xxx}跑一下,bingo!大家注意 add() 方法的参数,参数名是什么根本不用管,瞎写一通 fhdhdfai2u3y,没有关系,因为默认的 addObject()方法第一个参数只跟你的参数类型有关系,第二个参数就是你瞎写的参数名。相当于:addObject("myFuckingProduct", 随便写我写中文应该没人发现吧);然后 EL 表达式写什么就很明了了。也就是解答下面的疑惑![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601095529221-505056154.png)![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601101751774-2147182770.png)===============================###客户端跳转(个人认为是相当于重定向)在前面的例子中,无论是/index跳转到index.jsp 还是/addProduct 跳转到showProduct.jsp,都是服务端跳转。((个人认为是相当于转发))。![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601102944946-688802196.png)![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601104130288-211931082.png)![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601104140068-634425259.png)###Session在用户登录,一些特殊场合在页面间传递数据的时候会经常用到##重要发现![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601113906313-663585324.png)session的作用就是服务器会为不同的浏览器创建一个新的JSESSIONID 。 上面演示的就是同一台电脑,打开了2个不同的浏览器的 session在浏览器关闭时 就会结束,并销毁这个流浪器JSESSIONID 的标识号经我实验确实这样,我又重新打开一个新的浏览器,发现它的JSESSIONID=8E6CFCF25896A903EA99DB97575A2797 ,总之 这个应该标记号应该是全球唯一的。估计还带有机器码相关的算法##在Spring MVC中处理中文问题和Filter处理中文问题是一样的手段修改web.hml
<?xml version="1.0" encoding="UTF-8"?>

springmvc
org.springframework.web.servlet.DispatcherServlet
1
springmvc
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
```

1175089-20180601162459890-354870292.png

1175089-20180601162558812-704366895.png

1175089-20180601162807375-180311363.png

1175089-20180601162820411-1668161588.png

1175089-20180601162909579-1257819798.png

转载于:https://www.cnblogs.com/czy16/p/9114250.html

你可能感兴趣的文章
hexo 搭建博客
查看>>
关于 UIWebView 几个高级用法
查看>>
maven创建的项目中无法创建src/main/java 解决方案
查看>>
华为软件开发云测评报告二:代码检查
查看>>
集合1
查看>>
js 原生 ajax
查看>>
关键词 virtual
查看>>
建造者模式(屌丝专用)
查看>>
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>