搜档网
当前位置:搜档网 › springmvc第二天课堂笔记

springmvc第二天课堂笔记

springmvc第二天课堂笔记
springmvc第二天课堂笔记

springmvc第二天高级知识

复习:

springmvc框架:

DispatcherServlet前端控制器:接收request,进行response

HandlerMapping处理器映射器:根据url查找Handler。(可以通过xml配置方式,注解方式)

HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。

Handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。

Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出)

View resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示)

View视图:jsp页面,仅是数据展示,没有业务逻辑。

注解开发:

使用注解方式的处理器映射器和适配器:

在实际开发,使用代替上边处理器映射器和适配器配置。

@controller注解必须要加,作用标识类是一个Handler处理器。

@requestMapping注解必须要加,作用:

1、对url和Handler的方法进行映射。

2、可以窄化请求映射,设置Handler的根路径,url就是根路径+子路径请求方式

3、可以限制http请求的方法

映射成功后,springmvc框架生成一个Handler对象,对象中只包括一个映射成功的method。

注解开发中参数绑定:

将request请求过来的key/value的数据(理解一个串),通过转换(参数绑定的一部分),将key/value串转成形参,将转换后的结果传给形参(整个参数绑定过程)。

springmvc所支持参数绑定:

1、默认支持很多类型,HttpServletRequest、response、session、

model/modelMap(将模型数据填充到request域)

2、支持简单数据类型,整型、字符串、日期。。

只要保证request请求的参数名和形参名称一致,自动绑定成功

如果request请求的参数名和形参名称不一致,可以使用@RequestParam(指定request请求的参数名),@RequestParam加在形参的前边。

3、支持pojo类型

只要保证request请求的参数名称和pojo中的属性名一致,自动将request请求的参数设置到pojo 的属性中。

注意:形参中即有pojo类型又有简单类型,参数绑定互不影响。

自定义参数绑定:

日期类型绑定自定义:

定义的Converter<源类型,目标类型>接口实现类,比如:

Converter表示:将请求的日期数据串转成java中的日期类型。

注意:要转换的目标类型一定和接收的pojo中的属性类型一致。

将定义的Converter实现类注入到处理器适配器中。

class="org.springframework.format.support.FormattingConversionServiceFactoryBean">

springmvc和struts2区别:

springmvc面向方法开发的(更接近service接口的开发方式),struts2面向类开发。

springmvc可以单例开发,struts2只能是多例开发。

1课程安排

上午:

在商品查询和商品修改功能案例驱动下进行学习:

包装类型pojo参数绑定(掌握)。

集合类型的参数绑定:数组、list、map..

商品修改添加校验,学习springmvc提供校验validation(使用的是hibernate校验框架)

数据回显

统一异常处理(掌握)

下午:

上传图片

json数据交互

RESTful支持

拦截器

2包装类型pojo参数绑定

2.1需求

商品查询controller方法中实现商品查询条件传入。

2.2实现方法

第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参数。

第二种方法:在形参中让包装类型的pojo接收查询条件参数。

分析:

页面传参数的特点:复杂,多样性。条件包括:用户账号、商品编号、订单信息。。。

如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。

建议使用包装类型的pojo,pojo中属性是pojo。

2.3页面参数和controller方法形参定义

页面参数:

商品名称:

注意:itemsCustom和包装pojo中的属性一致即可。

controller方法形参:

public ModelAndView queryItems(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception

3集合类型绑定

3.1数组绑定

3.1.1需求

商品批量删除,用户在页面选择多个商品,批量删除。

3.1.2表现层实现

关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。controller方法定义:

页面定义:

3.2list绑定

3.2.1需求

通常在需要批量提交数据时,将提交的数据绑定到list中,比如:成绩录入(录入多门课成绩,批量提交),本例子需求:批量商品修改,在页面输入多个商品信息,将多个商品信息提交到controller方法中。

3.2.2表现层实现

controller方法定义:

1、进入批量商品修改页面(页面样式参考商品列表实现)

2、批量修改商品提交

使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list属性

页面定义:

3.3map绑定

也通过在包装pojo中定义map类型属性。

在包装类中定义Map对象,并添加get/set方法,action使用包装对象接收。

包装类中定义Map对象如下:

Publicclass QueryVo {

private MapitemInfo = new HashMap();

//get/set方法..

}

页面定义如下:

学生信息:

姓名:

年龄:

.. .. ..

Contrller方法定义如下:

public String useraddsubmit(Model model,QueryVoqueryVo)throws Exception{

System.out.println(queryVo.getStudentinfo());

}

4springmvc校验

4.1校验理解

项目中,通常使用较多是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。

服务端校验:

控制层conroller:校验页面请求的参数的合法性。在服务端控制层conroller校验,不区分客户端类型(浏览器、手机客户端、远程调用)

业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。

持久层dao:一般是不校验的。

4.2springmvc校验需求

springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)。

校验思路:

页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。

具体需求:

商品修改,添加校验(校验商品名称长度,生产日期的非空校验),如果校验出错,在商品修改页面显示错误

信息。

4.3环境准备

hibernate的校验框架validation所需要jar包:

4.4配置校验器

4.5校验器注入到处理器适配器中

4.6在pojo中添加校验规则

在ItemsCustom.java中添加校验规则:

4.7CustomValidationMessages.properties

在CustomValidationMessages.properties配置校验错误信息:

4.8捕获校验错误信息

//在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息

//注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

4.9在页面显示校验错误信息

在controller中将错误信息传到页面即可。

页面显示错误信息:

4.10分组校验

4.10.1需求

在pojo中定义校验规则,而pojo是被多个controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法需要不同的校验。

解决方法:

定义多个校验分组(其实是一个java接口),分组中定义有哪些规则

每个controller方法使用不同的校验分组

4.10.2校验分组

4.10.3在校验规则中添加分组

4.10.4在controller方法使用指定分组的校验

5数据回显

5.1什么数据回显

提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。

5.2pojo数据回显方法

1、springmvc默认对pojo数据进行回显。

pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写)

使用@ModelAttribute指定pojo回显到页面在request中的key

2、@ModelAttribute还可以将方法的返回值传到页面

在商品查询列表页面,通过商品类型查询商品信息。

在controller中定义商品类型查询方法,最终将商品类型传到页面。

页面上可以得到itemTypes数据。

3、使用最简单方法使用model,可以不用@ModelAttribute

5.3 简单类型数据回显

使用最简单方法使用model 。

model.addAttribute("id", id);

6 异常处理

6.1 异常处理思路

系统中异常包括两类:预期异常和运行时异常RuntimeException ,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的dao 、service 、controller 出现都通过throws Exception 向上抛出,最后由springmvc 前端控制器交由异常处理器进行异常处理,如下图:

springmvc 提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。

6.2自定义异常类

对不同的异常类型定义异常类,继承Exception。

6.3全局异常处理器

思路:

系统遇到异常,在程序中手动抛出,dao抛给service、service给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。

全局异常处理器处理思路:

解析出异常类型

如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示

如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)springmvc提供一个HandlerExceptionResolver接口

@Override

public ModelAndView resolveException(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex) {

//handler就是处理器适配器要执行Handler对象(只有method)

// 解析出异常类型

// 如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示

// String message = null;

// if(exinstanceof CustomException){

// message = ((CustomException)ex).getMessage();

// }else{

//// 如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)

// message="未知错误";

// }

//上边代码变为

CustomException customException = null;

if(ex instanceof CustomException){

customException = (CustomException)ex;

}else{

customException = new CustomException("未知错误");

}

//错误信息

String message = customException.getMessage();

ModelAndView modelAndView = new ModelAndView();

//将错误信息传到页面

modelAndView.addObject("message", message);

//指向错误页面

modelAndView.setViewName("error");

return modelAndView;

}

6.4错误页面

6.5在springmvc.xml配置全局异常处理器

6.6异常测试

在controller、service、dao中任意一处需要手动抛出异常。

如果是程序中手动抛出的异常,在错误页面中显示自定义的异常信息,如果不是手动抛出异常说明是一个运行时异常,在错误页面只显示“未知错误”。

在商品修改的controller方法中抛出异常.

在service接口中抛出异常:

如果与业务功能相关的异常,建议在service中抛出异常。

与业务功能没有关系的异常,建议在controller中抛出。

上边的功能,建议在service中抛出异常。

7上传图片

7.1需求

在修改商品页面,添加上传商品图片功能。

7.2springmvc中对多部件类型解析

图片上传不是key-value的数据格式的

在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。

如果在表单页面form中配置了multipart类型(enctype="multipart/form-data"),在springmvc.xml中必须配置multipart类型解析器,必须要配置这个解析器,如果不配置将导致参数传不过去后台,绑定失败。

7.3加入上传图片的jar

上边的解析内部使用下边的jar进行图片上传。

7.4创建图片虚拟目录存储图片

在真正的项目中,会有个单独的存储图片的服务器,这里就存储在本地的一个目录下。

通过图形界面配置:

也可以直接修改tomcat的配置:

在conf/server.xml文件,添加虚拟目录:

注意:在图片虚拟目录中,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期(年、月、日)进行分级创建。

7.5上传图片代码

7.5.1页面

下面是一个编辑页面,来编辑图片

这里的src=”/pic/${item.pic}”是一个绝对路径(访问的是虚拟目录下的图片),当在编辑页面中,src属性会根据这个路径找到该图片,显示出来的,如下:

表里保存的是文件名,而图片是放到本地的一个路径里,真正的项目中该图片是放在图片服务器中,如下:

7.5.2controller方法

修改:商品修改controller方法:

8json数据交互

8.1为什么要进行json数据交互

json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。比如:webservice接口,传输json数据.

8.2 springmvc 进行json 交互

1、请求json 、输出json ,要求请求的是json 串,所以在前端页面中需要将请求的内容转成json ,不太方便。

2、请求key/value 、输出json 。此方法比较常用。

8.3 环境准备

8.3.1 加载json 转的jar 包

springmvc 中使用jackson 的包进行json 转换(@requestBody 和@responseBody 使用下边的包进行json 转),如下:

系统集成部岗位职责和任职要求

系统集成部岗位职责和任职要求 一、系统集成部职责 系统集成部是一个在掌握行业客户详细信息基础上,根据用户需求,以系统高度为用户提供全面的系统解决方案(包括系统模式、技术路线和运作方案),并对项目售前、建设、售后过程进行统一管理的职能部门。系统集成部管理具有严密的科学性和较高的技术性,它是为用户创造安全、文明、舒适、方便的工作环境和生活环境的基本保障和坚强后盾,是反映公司服务水准、良好形象和社会声誉的重要标志,是公司实现最终经济目标的核心部门之一。 主要职责范围: 1、主要业务对象:集成控制系统、IT应用系统(含软硬件应用系统、网络系统等)、楼宇弱电系统、视频监控系统、及其他自动化智能化控制系统项目。 2、主要工作内容:负责上述系统商务及技术谈判,系统部署及软硬件系统集成施工、调试、运维和故障检修,以及上述主要工作的相关辅助工作。 3、管理职责: 部门内:负责与项目相关的各项事务管理,包括:市场拓展与商务管理、资质管理、项目组织管理、项目设备管理、项目安全管理、项目资料管理、施工器具管理、后期运维管理,以及项目队伍建设。 与财务资产部之间:协助财务资产部实施项目预算和项目账务

管理 与综合管理部之间:协助综合管理部完成商务合同签订、设备采购和验收。 与软件开发部之间:向软件开发部反馈用户信息、协助其完成软件开发、用户测试和最终部署。 二、系统集成部各工作岗位及职责 (一)系统集成部经理(副经理)岗位职责 1.组长(副组长) 1、组长对项目的安全负总体责任,负责项目的各项工作安排 及规划。 2.负责组织开展项目谈判、施工、售后的管理。 3.负责抓好系统集成部队伍建设,形成讲团结、重实效的和谐 团队。 4.总体负责所有项目管理,保证公司建设项目的工程质量和预 算控制,符合并确保完成公司全年工程项目目标要求。 5.负责制定培训计划,定期开展对本部门员工的业务培训。 6.负责监督、检查、指导本部门员工工作,定期对本部门各岗 位进行考核。 7.负责洽谈、监督、管理、验收公司工程项目的施工委托。(二)系统集成部高级工程师岗位职责 1.在部门经理的领导下,服从工作安排,管理参与工程项目的 员工和所辖设备。

系统集成工作规范

系统集成工作规范 总则 第1条为规范本公司系统集成的管理,形成一套行之有效的规范化的工作方法,提高工作效率,明确员工的工作职责,保证工程的质量,特制定本规范。 第2条鉴于本公司的实际工作分工,本规范所指的系统集成并不包括应用软件的开发和维护。 第3条本规范的主要内容包括:工程组织结构、工程工作流程、工程管理与考核、工程准备管理、工程实施管理、工程验收管理、工程维护管理、出差管理、培训体系共九大部分。 第一章工程组织结构 第1条工程的系统集成工作采用项目负责制,即由部门负责人指定、报公司批准确定一名项目经理。 第2条项目经理接受任命后,必须与用户项目组协调,确定用户现场负责人,制订出可行的工作进度表。根据工程的情况,划分子系统,并针对不同的子任务,由项目经理提名,部门负责人批准配备工程参与人员组成一任务小组,任务小组可以由一名或多名人员组成。项目经理也可以作为工程参与人员。 第3条针对不同的子任务,由项目经理指定一个工程参与人员为任务小组负责人,以便项目经理不在现场时处理具体事务。 第4条项目经理的主要职责: 1)与用户和供应商进行工程总协调。 2)项目的前期方案设计。与设计师协调,确定具体展项所用的软硬件,并将此设备清单报与商务部与采购部门。 3)计划工程进度,划分工程的子任务。 4)负责工程参与人员的配备并安排的实施过程,负责工程的成本、包括住宿、长途交通费、市内交通费等。 5)根据实际需要向部门领导请示宴请客户及其标准。 6)对用户所提出要求的响应。 7)制作和管理工程文档。 8)协调解决工程实施过程中出现的不可预测的问题。 9)向部门和公司领导汇报工作进度。 10)负责监督和考核工程参与人员的工作。 11)保证项目按合同期限和技术要求完成,承担完成工程目标的责任。 12)承担用户满意度责任。 第5条任务小组负责人的主要职责: 1)依照本规定,完成项目经理安排的任务。 2)向项目经理汇报工作进展情况,反馈用户的要求与意见。 3)负责任务准备期和实施期与用户的协调工作。 4)安排本任务小组成员的分配实施工作。 5)制作更新与任务相关的工程文档。 6)解决工程实施过程中出现的不可预测、妨碍进度的因素。 7)承担完成所接受任务的责任。 8)承担用户满意度的责任。

系统集成工作规范

系统集成工作规范 太原碧蓝水利工程设计有限公司 总则 第1条为规范本公司系统集成的管理,形成一套行之有效的规范化的工作方法,提高工作效率,明确员工的工作职责,保证工程的质量,特制定本规范。 第2条鉴于本公司的实际工作分工,本规范所指的系统集成并不包括项目的前期方案设计和应用软件的开发和维护。 第3条本规范的主要内容包括:工程组织结构、工程工作流程、工程管理与考核、工程准备管理、工程实施管理、工程验收管理、工程维护管理、出差管理、培训体系共九大部分。 第一章工程组织结构 第1条工程的系统集成工作采用项目负责制,即由部门负责人指定、报公司批准确定一名项目经理。 第2条项目经理接受任命后,必须与用户项目组协调,确定用户现场负责人,制订出可行的工作进度表。根据工程的情况,划分子系统,并针对不同的子任务,由项目经理提名,部门负责人批准配备工程参与人员组成一任务小组,任务小组可以由一名或多名人员组成。项目经理也可以作为工程参与人员。

第3条针对不同的子任务,由项目经理指定一个工程参与人员为任务小组负责人。 第4条项目经理的主要职责: 1)与用户和原厂商进行工程总协调。 2)协助本公司商务部写成国内产品的采购。 3)计划工程进度,划分工程的子任务。 4)负责工程参与人员的配备并安排的实施过程,负责工程的成本、包括住宿、长途交通费、市内交通费等。 5)根据实际需要向部门领导请示宴请客户及其标准。 6)对用户所提出要求的响应。 7)制作和管理工程文档。 8)协调解决工程实施过程中出现的不可预测的问题。 9)向部门和公司领导汇报工作进度。 10)负责监督和考核工程参与人员的工作。 11)保证项目按合同期限和技术要求完成,承担完成工程目标的责任。 12)承担用户满意度责任。 第5条任务小组负责人的主要职责: 1)依照本规定,完成项目经理安排的任务。 2)向项目经理汇报工作进展情况,反馈用户的要求与意见。 3)负责任务准备期和实施期与用户的协调工作。 4)安排本任务小组成员的分配实施工作。 5)制作更新与任务相关的工程文档。

系统集成经理岗位说明书

岗位说明书 一、概述: 职务名称:系统集成部经理 成长方向:系统集成部总监、副总经理、分/子公司总经理 职责范畴:系统集成项目的整体工作的统筹,团队发展与管理; 下属配置:部门副经理、项目经理、高级工程师、实施工程师、技术工程师 二、主要工作: 1、根据公司制定的系统集成项目总体计划结合市场实际情况,制定部门执行计划并加以 落实; 2、负责项目现场的前期踏勘; 3、进行部门员工的招聘、培训、考核、淘汰管理; 4、进行部门集成项目的产品采购、项目实施、故障处理、客户培训、安装、调试、后期 维护等工作的安排、指导、监督、激励、检查等工作; 5、组织部门人员完成项目方案的编写、产品授权/询价/采购及安装调试。 6、直接负责重大项目,根据要求为客户提供技术咨询和建议,进行方案、标书的制作和 投标,并在项目实施过程中提供技术支持; 7、负责用户回访工作和重要项目用户的关系维护; 8、负责完成其他上级主管临时安排的工作; 9、保守公司商业秘密;

三、任职资格: 3.1教育背景: ◆信息工程、网络工程,以及计算机相关专业; 3.2培训经历: ◆项目管理、协调与沟通等方面的培训; 3.3工作经验: ◆三年以上系统集成、音视频或IT软硬件售前等相关工作经验; 3.4技能技巧: ◆.掌握或熟悉服务器、存储、交换机、路由器、网络服务产品和技术知识等,有撰写技术标书经验,熟悉项目招投标流程; ◆对新技术和知识具有较强的学习能力和创新精神,具有优秀的方案和技术文档编写能力,熟练使用CAD、OFFICE的办公制图软件; ◆具备优秀的表达呈现能力和与客户沟通能力,有良好的问题分析和实际操作能力; ◆.具有优秀的工作责任感和领导力。 四、个性素质: ◆有高度的工作热情,有良好的职业道德; ◆性格要求平和、稳重,同时又富有亲和力; ◆相对客观的自我认知力,较好的自信心、自控力、学习力、创新力; ◆有系统思维能力,有责任心、有担当,坚韧、抗压能力强,对结果负责。

系统集成部年度工作总结doc

系统集成部年度工作总结 篇一:XX年系统集成工程师工作总结 XX年工作总结报告 总觉得还没有来得及揣摩自己在这一年中的所有得失,XX年已经即将成为过去,细细回味这一年走过的路,虽然没有轰轰烈烈的成绩和战果,但是也经历了一些不平凡的考验和磨砺。XX年是我工作旅程中的转折一年,在这一年中,我在自己的岗位上迎来了更多的历练和思考。 来到XXXXX公司已经一年光景,作为一名系统集成项目工程师,得到公司领导与部门同事不少的批评和帮助,在履行自己职责的同时,也逐渐看到了自己距离优秀员工所具备的全面素质要求还有一段需要努力弥补和完善的差距。空闲的时候我也时常扪心自问,自己怎样才能尽快成长为一名成熟的系统集成专业人,从而实现公司价值和自身价值的提升? 自从担任系统集成工程师以来,主要负责XX区政府一期项目的后期系统及设备的安装调试、维护及检修,XXXX项目以及XX城管二期项目中协助大项目经理完成项目建设。 具体工作内容如下: 1、 XXX政府一期项目: 项目的后期会议现场技术支持,会议系统升降机的拆卸和更换及XXXX四个工地无线监控摄像头的安装,维护及检修。

2、 XX城管项目: 协助大项目经理完成项目实施过程中需要提交监理公司的相关文档的编 写,如施工日志、施工周报、月报、会议纪要等过程文档。项目中各个系统使用的相关设备的到货报审、设备安装上架报审、调试报审,设备开箱相关合格证及附件资料的整理。软件的安装调试报审、系统联调、系统试运行等相关文件的制作提交。在随着项目实施工程中除制作提交项目过程文档外,负责项目现场外包工程施工现场的监督和支持。服务器设备的网络调试,网络设备及KVM切换器的安装上架,机柜电源线和网线的铺设及捆扎。 3、 XX城管二期项目: 在大项目经理的带领下主要负责项目中各硬件服务器设备的到货时间跟踪。XX城管各类硬件设备及软件平台安装协调例如:四个监控工地的高清网络摄 像头立杆及高清摄像头的安装,电信SMTP光纤线路、APN线路、VPN线路、中继数字电路安装,14辆环卫车辆海康硬盘录像机及车载摄像头安装,曙光视频管理服务器及存储磁盘阵列的安装,大屏拼接处理器和高清解码设备的安装升级,海康视频管理平台软硬件的安装调试。项目后期编写收集整理各类项目文档:施工日志编写、硬件设备到货报审文件制作,参照XX项目收集准备项目验收文档。项目后期

相关主题