关闭

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

261人阅读 评论(0) 收藏 举报

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。所以转发前请求的参数在转发后仍然可以读取到。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:484860次
    • 积分:7398
    • 等级:
    • 排名:第2967名
    • 原创:25篇
    • 转载:1642篇
    • 译文:0篇
    • 评论:85条
    最新评论