Java全栈开发springmvc学习笔记第一天

转载 2017年02月22日 15:48:09

Springmvc

JavaEE体系结构

Java全栈开发springmvc学习笔记第一天

什么是mvc?

原始的mvc:

Java全栈开发springmvc学习笔记第一天

Mvc:

Java全栈开发springmvc学习笔记第一天

什么是springmvc?

Springmvc是一个web层mvc框架,类似struts2.

Springmvc和spring关系?

Java全栈开发springmvc学习笔记第一天

Springmvc是spring的一部分。

Springmvc执行

原理(流程)

Struts2:

控制层:strutsPrepareAndExcuteFilter –前端控制器 /*

l 接受请求

l 转发请求

前端控制器拦截请求?需求干什么事?

寻找Action层执行请求。

ActionMapping:寻找Action,创建代理对象。

Springmvc:

Java全栈开发springmvc学习笔记第一天

那些需要自己开发,那些需要配置:

Java全栈开发springmvc学习笔记第一天

Springmvc入门案例

创建web工程,且导入jar

导入spring,springmvc,log4j.Java全栈开发springmvc学习笔记第一天

配置web.xml(前端控制器)

DispatcherServlet.

加载默认springmvc配置文件

Java全栈开发springmvc学习笔记第一天

加载classpath配置文件:

Java全栈开发springmvc学习笔记第一天

Java全栈开发springmvc学习笔记第一天

配置处理器映射器(springmvc.xml)

Java全栈开发springmvc学习笔记第一天

自定义Controller

Java全栈开发springmvc学习笔记第一天

配置自定义bean(springmvc.xml)

Java全栈开发springmvc学习笔记第一天

配置处理器适配器(springmvc.xml)

Java全栈开发springmvc学习笔记第一天

返回逻辑视图,视图解析器解析视图

Java全栈开发springmvc学习笔记第一天

配置视图解析器:

Java全栈开发springmvc学习笔记第一天

根据代码分析执行流程

Java全栈开发springmvc学习笔记第一天

处理器适配源码

Java全栈开发springmvc学习笔记第一天

处理器

映射器

BeanNameUrlHandlerMapping

功能:默认的映射器,复杂寻找Controller。

根据bean(Controller)的name属性的匹配daoController

需要在springmvc定义:Java全栈开发springmvc学习笔记第一天

SimpleUrlHandlerMapping

Java全栈开发springmvc学习笔记第一天

ControllerClassNameUrlHandlerMapping

Java全栈开发springmvc学习笔记第一天

三个处理器映射器可以共存?

可以。

处理器是配置器SimpleControllerHandlerAdapter

功能:执行Controller。调用Controller方法。

Java全栈开发springmvc学习笔记第一天

HttpRequestHandlerAdapter

功能:执行实现接口HttpRequestHandler的Controller。

定义自定义bean

Java全栈开发springmvc学习笔记第一天

在springmvc.xml

Java全栈开发springmvc学习笔记第一天

定义处理器适配器

Java全栈开发springmvc学习笔记第一天

控制器(命令控制器)

分析器:springmvc命令设计模式接受参数。

定义命令控制器

Java全栈开发springmvc学习笔记第一天

发送参数页面

Java全栈开发springmvc学习笔记第一天

Java全栈开发springmvc学习笔记第一天

跳转到add页面

由于add页面在web-inf下面,不能直接方法,必须通过Controller转发。

定义Controller进行转发:

Java全栈开发springmvc学习笔记第一天

在springmvc配置文件配置访问地址

Java全栈开发springmvc学习笔记第一天

乱码解决Get请求

Java全栈开发springmvc学习笔记第一天

Post乱码

配置spring编码过滤器:characterEncodingFilter。

Java全栈开发springmvc学习笔记第一天

Java全栈开发springmvc学习笔记第一天

时间类型转换

Java全栈开发springmvc学习笔记第一天

注解入门

创建一个web工程,且导入jar

Java全栈开发springmvc学习笔记第一天

Web.xml

同上(略)

前端控制器:DispatcherServlet

编码过滤器:CharacterEncodingFilter。

Springmvc

Java全栈开发springmvc学习笔记第一天

定义Controller

Java全栈开发springmvc学习笔记第一天

访问http://localhost:8080/springmvc1018_day01_02/hello.do

注解访问流程

Java全栈开发springmvc学习笔记第一天

RequestMapping

功能:请求映射,和浏览器请求进行匹配。匹配成功找到Controller。

requestMapping(“/hello.do)

requestMapping(“hello”)

requestMapping(value=”/hello.do”)

requestMapping(value=”/hello.do”,method=RequestMethod.GET)

requestMapping(value=”/hello.do”,method=RequestMethod.POST)

requestMapping(value=”/hello.do”,method={RequestMethod.POST, RequestMethod.GET})

根路径

requestMapping(“/user”)

UserController{

requestMapping(“save”)

save(){}

requestMapping(“update”)

update(){}

requestMapping(“delete”)

delete(){}

}

requestMapping(“/items”)

ItemsController{

requestMapping(“save”)

save(){}

requestMapping(“update”)

update(){}

requestMapping(“delete”)

delete(){}

}

接受参数

基本类型(int)

页面

Java全栈开发springmvc学习笔记第一天

代码

Java全栈开发springmvc学习笔记第一天

接受String类型和int页面

Java全栈开发springmvc学习笔记第一天

代码

Java全栈开发springmvc学习笔记第一天

Pojo类型页面

Java全栈开发springmvc学习笔记第一天

代码

Java全栈开发springmvc学习笔记第一天

包装类型

定义包装类

Java全栈开发springmvc学习笔记第一天

页面

Java全栈开发springmvc学习笔记第一天

接受参数方法

Java全栈开发springmvc学习笔记第一天

集合List

页面

Java全栈开发springmvc学习笔记第一天

接受参数方法

Java全栈开发springmvc学习笔记第一天

集合Map页面

Java全栈开发springmvc学习笔记第一天

接受参数

Java全栈开发springmvc学习笔记第一天

有了struts2,为什么使用springmvc?

实现机制:

Struts2:过滤器

Springmvc:servlet

Servlet速度比过滤器快。

运行效率:

单例:springmvc

创建一个Controller,创建方法里面几个对象。1+N

多例:struts2

N个Action对象,ActionContext,ValueStack,ActionSupport,Model。

封装参数:

Struts:基于属性进行封装。

Springmvc:基于方法封装。方法属性是局部变量,方法结束,变量销毁。颗粒度更细。

查询

列表

回显:使用回显参数:Model====application。

使用c标签循环list集合:需要jstl的jar包:

//查询列表回显

@RequestMapping("list")

public String list(Model model){

List<User> list = new ArrayList<User>();

User user1 = new User();

user1.setUsername("普京");

user1.setSex("女");

user1.setAddress("俄罗斯");

user1.setBirthday(new Date());

user1.setId(1);

User user2 = new User();

user2.setUsername("普京2");

user2.setSex("男");

user2.setAddress("俄罗斯2");

user2.setBirthday(new Date());

user2.setId(2);

User user3 = new User();

user3.setUsername("普京3");

user3.setSex("男");

user3.setAddress("俄罗斯3");

user3.setBirthday(new Date());

user3.setId(3);

list.add(user1);

list.add(user2);

list.add(user3);

model.addAttribute("list", list);

return"list";

}

页面获取集合值:

Java全栈开发springmvc学习笔记第一天

Restfull

Restfull软件架构模式:无扩展名,无参数。

Url模版映射

Java全栈开发springmvc学习笔记第一天

Java全栈开发springmvc学习笔记第一天

去掉扩展名

约定:利用servlet可以拦截目录功能 和 url 模版映射

Java全栈开发springmvc学习笔记第一天

改写请求:

Java全栈开发springmvc学习笔记第一天

requestParam

Java全栈开发springmvc学习笔记第一天

.Redirect

Contrller方法返回结果重定向到一个url地址,如果方式:

return "redirect:/user/userlist.do";

注意:

¨ redirect:list.do 与 redirect:/user/list.do" 同一个类

在同一个类里面进行跳转。上面2个都可以实现跳转。但是有区别:

第一个是同一个根路径下面跳转。第二个是在项目路径下进行跳转。

¨ 不同的类进行跳转

不同的类进行跳转只能使用:redirect:/items/list.do进行跳转。即是从项目路径下来查询。

redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址,因为转发即执行了一个新的request和response。

由于新发起一个request原来的参数在转发时就不能传递到下一个url,如果要传参数可以/user/userlist.do后边加参数,如下:

/user/userlist.action?groupid=2&…..

5.Forward

controller方法执行后继续执行另一个controller方法。

本类:return “forward:list.do” 或者 return ”forward:/user/list.do“

跨类:

return "forward:/items/list.do";

forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request和response。所以转发前请求的参数在转发后仍然可以读取到。

从零开始开发一个全栈Web应用实录

虽说学习了大半年前端,但是对前端的理解仍然停留在对HTML,CSS,JS,JQuery的概念理解上,并且没有接触过相关的后端开发,所以说,这个项目也可称为从零开始,是新手向的文章,不要害怕有门槛哈。项...
  • weixin_31347831
  • weixin_31347831
  • 2017年07月07日 09:14
  • 1419

python搭建web全栈

一个Python服务器和一个React前端
  • shuifu1988
  • shuifu1988
  • 2017年09月12日 09:20
  • 366

Web全栈学习路线图

再附一张前端大神养成图 https://www.processon.com/view/566543b8e4b0fd9299902eb4
  • ncafei
  • ncafei
  • 2016年11月22日 16:49
  • 1224

HTML5全栈开发究竟是什么 定义阐述

知其然,更要知其所以然,这是中国人对知识真理的追求写照。然而在关于HTML5的问题上,这句话并没有显现出来。HTML5全栈开发会改变下一代互联网,HTML5潜力无限,这些观点在互联网上甚多。为什么呢?...
  • u011082886
  • u011082886
  • 2016年05月24日 20:30
  • 611

记最近一次Nodejs全栈开发经历

背景:前段时间大部门下新成立了一个推广百度OCR、文字识别、图像识别等科技能力在金融领域应用的子部门。因为部门刚成立,基础设施和人力都是欠缺的。当时分到我们部门的任务是抽调一个人做新部门主站前端开发工...
  • yisuowushinian
  • yisuowushinian
  • 2017年07月22日 16:42
  • 5460

MEAN全栈开发学习笔记1===>栈的安装

从今天开始,肥羊要对MEAN全栈开发做好学习笔记,感兴趣的朋友可以一起讨论。...
  • chichenyang1989
  • chichenyang1989
  • 2016年06月14日 09:09
  • 725

学会nodejs-成为全栈工程师--持续更新

最近一段时间,nodejs十分火,甚至有人扬言,学习了nodejs,可以当全栈工程师。 也就是前后端通吃。哈哈,这引起了我的兴趣,只学习一门语言javascript,就可以全栈通吃,岂不妙哉! 所以,...
  • qq_34309305
  • qq_34309305
  • 2017年05月10日 17:11
  • 805

Java开发工程师的学习路线图

原文:JAVA学习路线图 此乃是Java攻城狮的学习路线图,由简到繁,由易到难,一步步的学习,最后成为JAVA攻城狮。希望对大家的学习有所帮助! 阶段一 1:学习HTML     2:...
  • Alexshi5
  • Alexshi5
  • 2018年01月04日 22:47
  • 128

.NET全栈开发工程师学习路径

PS:最近一直反复地看博客园以前发布的一条.NET全栈开发工程师的招聘启事,觉得这是我看过最有创意也最朴实的一个招聘启事,更为重要的是它更像是一个技术提纲,能够指引我们的学习和提升,现在转载过来与各位...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年03月16日 21:06
  • 844

“全栈”工程师 请不要随意去做

今天我来给大家说说 “全栈工程师” 的事儿。 写这篇文的背景原因:很简单就是最近越来越多的人想做【全栈工程师】,他们的目标就是全栈,他们才入行短短1-2年,甚至刚从培训班出来:我的目标是做全栈,我啥都...
  • xllily_11
  • xllily_11
  • 2017年03月28日 11:41
  • 18180
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java全栈开发springmvc学习笔记第一天
举报原因:
原因补充:

(最多只允许输入30个字)