当前位置: 首页 > news >正文

wordpress网站克隆公明做企业网站

wordpress网站克隆,公明做企业网站,app软件开发公司推荐,邢台市刚刚发生的事Spring实战第4版 第2部分 Web中的Spring 五. 构建Spring Web应用程序5.1 SpirngMVC请求流程5.2 搭建Spring MVC5.2.1 配置DispatcherServlet5.2.2 配置WebConfig5.2.3 配置RootConfig 5.3 编写基本的控制器5.4 Spittr首页5.6 复杂的控制器5.6.1 定义类级别的请求处理5.6.2 传递… Spring实战第4版 第2部分 Web中的Spring 五. 构建Spring Web应用程序5.1 SpirngMVC请求流程5.2 搭建Spring MVC5.2.1 配置DispatcherServlet5.2.2 配置WebConfig5.2.3 配置RootConfig 5.3 编写基本的控制器5.4 Spittr首页5.6 复杂的控制器5.6.1 定义类级别的请求处理5.6.2 传递模型数据到视图中5.6.3 接受请求的输入5.6.4 处理表单5.6.5 校验表单 六. 渲染Web视图6.1 视图解析器6.2 创建JSP视图6.2.1 配置InternalResourceViewResolver6.2.2 使用Spring的JSP库6.2.3 Spring通用标签库6.2.4 展示国际化信息6.2.5 创建URL6.2.6 转义 6.3 使用Apache Tiles视图定义布局6.3.1 配置Tile视图解析器6.3.2 定义Tiles6.3.3 主布局模板 6.4 使用Thymeleaf模板6.4.1 配置Thymeleaf视图解析器6.4.2 定义Thymeleaf模板6.4.3 借助Thymeleaf实现表单绑定 七. Spring MVC的高级技术7.1 Spring MVC配置的替代方案7.1.1 自定义DispacherServlet配置7.1.2 添加其他Servlet和Filter7.1.3 web.xml中声明DispatcherServlet7.1.4 web.xml中使用基于java的配置 7.2 处理Multipart形式的数据7.2.1 配置multipart解析器7.2.2 StandardServletMultipartResolver7.2.3 CommonsMultipartResolver 7.3 处理Multipart请求7.4 处理异常7.4.1 异常映射HTTP状态码7.4.2 异常处理方法7.4.3 为控制器添加通知 7.5 跨重定向请求传递数据7.5.1 使用URL传递7.5.2 使用flash传递 八. 使用Spring Web Flow8.1 在Spring中配置Web Flowxml配置8.1.1 装配流程执行器8.1.2 配置流程注册表8.1.3 处理流程请求 8.2 流程组件8.2.1 状态8.2.1.1 行为状态8.2.1.2 决策状态8.2.1.3 结束状态8.2.1.4 子流程状态8.2.1.5 视图状态 8.2.2 转移8.2.3 流程数据8.2.3.1 声明变量8.2.3.2 作用域 8.3 流程实例 五. 构建Spring Web应用程序 5.1 SpirngMVC请求流程 web浏览器发送请求 第一站前端控制器DispatcherServlet其作用是将从处理器映射handler mapping获取请求的下一站是哪里哪个控制器。 第二站将请求数据交由控制器处理controller或者是控制器将业务逻辑委托给一个或多个服务对象处理处理完的数据称为模型model再进行友好的方式进行格式化最后发送给视图view 第三站视图渲染数据响应给web浏览器。5.2 搭建Spring MVC 5.2.1 配置DispatcherServlet public class SpittrWebAppInitializerextends AbstractAnnotationConfigDispatcherServletInitializer {Overrideprotected String[] getServletMappings() {return new String[] {/}; // 将DispatcherServlet映射到/}Overrideprotected Class?[] getRootConfigClasses() {return new Class?[] {RootConfig.class};}Overrideprotected Class?[] getServletConfigClasses() {return new Class?[] {WebConfig.class};} }5.2.2 配置WebConfig Configuration EnableWebMvc public class WebConfig {}5.2.3 配置RootConfig Configuration ComponentScan(basePackages{spittr}, excludeFilters{Filter(typeFilterType.ANNOTATION, valueEnableWebMvc.class) }) public class RootConfig {}5.3 编写基本的控制器 Controller // 声明为一个控制器 public class DemoController {RequestMapping(value/, methodGET) // 处理对/的Get请求public String demo() {return demo; // 发送给视图“demo”} }5.4 Spittr首页 略。。。详细可从书中p144获知 5.6 复杂的控制器 5.6.1 定义类级别的请求处理 Controller RequestMapping(/) public class DemoController {... }5.6.2 传递模型数据到视图中 略。。。详细可从书中p147获知 5.6.3 接受请求的输入 Controller RequestMapping(/) public class DemoController {Autowiredprivate DemoService demoService;RequestMapping(value/getList, methodGET)public ListString getList(RequestParam(conut) long count) { return demoService.selectByCount(count);}RequestMapping(value/{id}, methodGET)public ListString getObj(PathVariable(id) long id) { return demoService.selectById(id);} }5.6.4 处理表单 略。。。详细可从书中p158获知 5.6.5 校验表单 在Spring MVC中提供了对java校验API的支持详细可从书中p164获知或百度 public class Demo {NotNullSize(min5, max16)private Long id;... }Controller RequestMapping(/) public class DemoController {RequestMapping(value/valid, methodPOST)public Boolean valid(Valid Demo demo, Errors errors) {if (errors.hasErrors()) {return false;}return true;} }六. 渲染Web视图 6.1 视图解析器 Spring自带了13个视图解析器 视图解析器描述BeanNameViewResolver将视图解析为Spring应用上下文中的bean其中bean的ID与视图的名字相同ContentNegotiatingViewResolver通过考虑客户端的内容类型来解析视图委托给另一个能够产生对应内容类型的视图解析器FreeMarkerViewResolver将视图解析为FreeMarker模板InternalResourceViewResolver将视图解析为Web应用的内部资源一般为JSPJasperReportsViewResolver将视图解析为JasperReports定义ResourceBundleViewResolver将视图解析为资源bundle一般为属性文件TilesViewResolver将视图解析为Apache Tiles定义其中tile ID与视图名称相同注意有两个不同的TilesViewResolver实现分别对应Tiles 2.0 和 Tiles 3.0UrlBasedViewResolver直接更具视图的名称解析视图视图的名称会匹配一个物理视图的定义VelocityLayoutViewResolver将视图解析为Velocity布局从不同的Velocity模板中组合页面VelocityViewResolver将视图解析为Velocity模板XmlViewResolver将视图解析为XML文件中bean的定义类似于BeanNameViewResolverXsltViewReslover将视图解析为XSLT转换后的结果ThymeleafViewResolver将逻辑视图名称解析为Thymeleaf模板视图 6.2 创建JSP视图 6.2.1 配置InternalResourceViewResolver bean public ViewResolver viewResolver() {InternalResourceViewResolver resolver new InternalResourceViewResolver();resolver.setPrefix(/WEB-INFO/views/);resolver.setSuffix(.jsp);// 解析JSTL标签resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);return resolver; }bean idviewResolver class org.springframework.web.servlet.view.InternalResourceViewResolver p:prefix/WEB-INFO/views/ p:suffix.jsp p:viewClassorg.springframework.web.servlet.view.JstlView /6.2.2 使用Spring的JSP库 !-- JSP页面声明 -- % tagblib urihttp://wwww.springframwork.org/tags/form prefixsf %6.2.3 Spring通用标签库 % tagblib urihttp://wwww.springframwork.org/tags prefixs %6.2.4 展示国际化信息 h1s:message codespittr.welcome / /h1Bean public MessageSource messageSource() {ResourceBunleMessageSource messageSource new ResourceBunleMessageSource();messageSource.setBeanname(message);return messageSource; }Bean public MessageSource messageSource() {ReloadableResourceBunleMessageSource messageSource new ReloadableResourceBunleMessageSource();messageSource.setBasename(file://etc/spittr/messages); // 类路径以 classpath: 为前缀messageSource.setCacheSeconds(10);return messageSource; }// en.properties spittr.welcomeWelcome to Spittr!// zh.properties spittr.welcome欢迎来到Spittr!6.2.5 创建URL s:url。。。详细可从书中p182获知6.2.6 转义 s:escapebody。。。详细可从书中p184获知6.3 使用Apache Tiles视图定义布局 6.3.1 配置Tile视图解析器 Bean public TilesConfigurer tilesConfigurer() {TilesConfigurer tiles new TilesConfigurer();// 指定Tile的定义的位置 /WEB-INFO/**/tiles.xml tiles.setDefinitions(new String[] {/WEB-INFO/layout/tiles.xml });// 启用刷新功能tiles.setCheckRefresh(true);return tiles; }Bean public ViewResolver viewResolver() {return new TilesViewResolver(); }bean idtilesConfigurer classorg.springframework.web.servlet.view.tiles3.TilesConfigurerproperty namedefinitionslistvalue/WEB-INFO/layout/tiles.xml/valuevalue/WEB-INFO/**/tiles.xml/value/list/property /beanbean idviewResolver classorg.springframework.web.servlet.view.tiles3.ViewResolver /6.3.2 定义Tiles xml version1.0 encodingUTF-8 DOCTYPE tiles-definitions PUBLIC... tiles-definitions!-- 定义base Tiles --definition namebase template/WEB-INF/layout/page.jsp!-- 设置属性 --put-attribute namebody value/WEB-INF/layout/header.jsp /put-attribute namefooter value/WEB-INF/layout/footer.jsp //definition!-- 扩展base Tiles --definition namehome template/WEB-INF/layout/home.jsp!-- 设置属性 --put-attribute namebody value/WEB-INF/layout/home.jsp //definition /tiles-definitions6.3.3 主布局模板 % tagblib urihttp://wwww.springframwork.org/tags prefixs % % tagblib uritiles.apache.org/tags-tiles prefixt %htmlhead.../headbodydiv idheadert:insertAttribute nameheader / /divdiv idcontentt:insertAttribute namebody //divdiv idfootert:insertAttribute namefooter //div/body /html6.4 使用Thymeleaf模板 略。。。详细可从书中p190~196获知 6.4.1 配置Thymeleaf视图解析器 6.4.2 定义Thymeleaf模板 6.4.3 借助Thymeleaf实现表单绑定 七. Spring MVC的高级技术 7.1 Spring MVC配置的替代方案 略。。。详细可从书中p200~205获知 7.1.1 自定义DispacherServlet配置 7.1.2 添加其他Servlet和Filter 7.1.3 web.xml中声明DispatcherServlet 7.1.4 web.xml中使用基于java的配置 7.2 处理Multipart形式的数据 7.2.1 配置multipart解析器 从Spring3.1开始Spring内置了两个MultipartResolver的实现供我们选择 multipart解析器描述CommonsMultipartResolver使用Jakarta Commons FileUpload解析multipart请求StandardServletMultipartResolver依赖于servlet3.0对multipart请求的支持 7.2.2 StandardServletMultipartResolver bean public MultipartResolver multipartResolver() throws IOException {return new StandardServletMultipartResolver(); }// java配置 Override protected void custiomizeRegistration(Dynamic registration) {// 临时路径文件大小不超过2MB整个请求不超过4MB所有文件都写入磁盘registration.setMultipartConfig(new MultipartConfigElement(/tmp/spittr/uploads 2096000, 4192000, 0)); }!-- xml配置 -- servletservlet-nameappServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup1/load-on-startupmultipart-configlocation/tmp/spittr/uploads/locationmax-file-size2096000/max-file-sizemax-request-size4192000/max-request-size/multipart-config /servlet7.2.3 CommonsMultipartResolver bean public MultipartResolver multipartResolver() throws IOException {CommonsMultipartResolver resolver new CommonsMultipartResolver();resolver.setUploadTempDir(new FileSystemResource(/tmp/spittr/uploads)); // 临时路径resolver.setMaxUploadSize(2096000); // 最大的文件容量resolver.setMaxInMemorySize(0); // 最大的内存大小return resolver; }7.3 处理Multipart请求 form methodPOST enctypemultipart/form-data th:object${spitter}...labelProfile picture/labelinput typefile nameprofilePicture acceptimage/jpeg,image/png,image/gif /... /form// 方式一无法获取文件信息 RequestMapping(value/register, methodPOST) public String processRegistration(RequestPart(profilePicture) btye[] profilePicture,Valid Spitter spitter,Errors errors) {... }// 方式二使用part能获取文件信息 RequestMapping(value/register, methodPOST) public String processRegistration(RequestPart(profilePicture) Part profilePicture,Valid Spitter spitter,Errors errors) {... }7.4 处理异常 7.4.1 异常映射HTTP状态码 ResponseStatus(valueHttpStatus.NOT_FOUND, resonSpittle Not Found) public class SpitterNotFoundException extends RuntimeException {... }7.4.2 异常处理方法 // 方式一 RequestMapping(methodPOST) public String saveSpitter(SpittleForm form, Model model) {try {spittleRepository.save(new Spittle(null, form.getName()));return redirect:/spittles;} catch (DuplicateSpittleException e) {return error/duplicate;} }// 方式二 // 该控制器里的方法抛出DuplicateSpittleException异常就会调用handleDuplicateSpittle()方法来处理异常 RequestMapping(methodPOST) public String saveSpitter(SpittleForm form, Model model) {spittleRepository.save(new Spittle(null, form.getName()));return redirect:/spittles; }ExceptionHandler(DuplicateSpittleException.class) public String handleDuplicateSpittle() {return error/duplicate; }7.4.3 为控制器添加通知 // 任意控制器抛出DuplicateSpittleException异常都会调用handleDuplicateSpittle()方法来处理异常 ControllerAdvice public class AppWideExceptionHandller {ExceptionHandler(DuplicateSpittleException.class)public String handleDuplicateSpittle() {return error/duplicate;} }7.5 跨重定向请求传递数据 跨重定向请求传递数据使用URL模板以路径变量或查询参数的形式传递数据通过flash属性发送数据 7.5.1 使用URL传递 RequestMapping(value/register, methodPOST) public String processRegistration(Spitter spitter, Model model) {spittleRepository.save(Spitter);model.adddAttribute(name, Spitter.getName());return redirect:/spittles/{name}; }7.5.2 使用flash传递 RequestMapping(value/register, methodPOST) public String processRegistration(Spitter spitter, Model model) {spittleRepository.save(spitter);model.adddAttribute(name, spitter.getName());model.adddFlashAttribute(spitter, spitter);return redirect:/spittles/{name}; }RequestMapping(value/{name}, methodGET) public String showSpitterProfile(PathVariable String name, Model model) {if (!model.contaionsAttribute(spitter)) {model.adAttribute(spittleRepository.findByName(name));}return profile; }八. 使用Spring Web Flow 8.1 在Spring中配置Web Flowxml配置 8.1.1 装配流程执行器 !-- 当用户进入一个流程时流程执行器会为用户创建并启用一个流程执行实例 -- flow:flow-executor idflowExecutor /8.1.2 配置流程注册表 !-- 加载流程定义并让流程执行器能够使用它们 -- !-- 流程注册表会在/WEB-INF/flows目录下查找流程定义任何文件名以*-flow.xml结尾的xml文件都视为流程 -- flow:flow-registry idflowRegistry base-path/WEB-INF/flowsflow:flow-location-pattern value*-flow.xml / /flow:flow-registry!-- 直接指明文件 springpizza作为流程id -- flow:flow-registry idflowRegistryflow:flow-location value/WEB-INF/flows/springpizza.xml / /flow:flow-registry!-- 直接指明文件和id -- flow:flow-registry idflowRegistryflow:flow-location idpizza value/WEB-INF/flows/springpizza.xml / /flow:flow-registry8.1.3 处理流程请求 !-- 在Spring应用上下文中配置一个FlowHandlerMapping来帮助前端控制器将流程请求发送给Spring Web Flow -- bean classorg.springframework.webflow.mvc.servlet.FlowHandlerMappingpropertry nameflowRegistry refflowRegistry / /bean!-- 响应请求的是FlowHandlerAdapter等同于Spring MVC的控制器对请求进行处理 -- bean classorg.springframework.webflow.mvc.servlet.FlowHandlerAdapterpropertry nameflowExecutor refflowExecutor / /bean8.2 流程组件 8.2.1 状态 类型作用行为Action流程逻辑发生的地方决策Decision将流程基于流程数据确定分成两个方向结束End流程最后一站一旦进入流程终止子流程Subflow会在当前正在运行大队流程上下文中启动一个新的流程视图View暂停流程并邀请用户参与流程 8.2.1.1 行为状态 !-- 应用程序执行任务时一般会出发Spring所管理bean的一些方法并根据方法的执行结果转移到另一个状态 -- action-state idsaveOrderevaluate expressionpizzaFlowActions.saveOrder(order) /transition tothankYou / /action-state8.2.1.2 决策状态 !-- 评估一个boolean类型的表达式然后再两个状态转移中选择一个 -- decision-state idcheckDeiveryAreaif testpizzaFlowAtions.checkDeliveryArea(customer.zipCode)thenaddCustomerelsedeliveryWarning / /decision-state8.2.1.3 结束状态 !-- 结束之后发生什么取决于三个因素。。。详细可从书中p231获知 -- end-state idcustomerReady /8.2.1.4 子流程状态 !-- 如果子流程结束状态id为orderCreated那么流程会转移到payment -- subflow-state idorder subflowpizza/orderinput nameorder valueorder /transition onorderCreated topayment / /subflow-state8.2.1.5 视图状态 !-- 简单实例 -- view-state id welcome / !-- 指明视图名 -- view-state id welcome viewgreeting/ !-- 视图绑定的对象 -- view-state id welcome modedlflowScope.paymentDetails/ 8.2.2 转移 !-- 当前状态的默认转移项 -- transition tocustomerReady / !-- 触发了phoneEntered就会进入customerReady状态 -- transition onphoneEntered tocustomerReady / !-- 触发了异常就会进入customerReady状态 -- transition on-exceptioncom.springinaction.pizza.service.CustomerNotFoundException tocustomerReady / !-- 全局转移,流程中所有的状态都会默认拥有这个转移 -- global-transitionstransition oncancel toendstate / /global-transitions8.2.3 流程数据 8.2.3.1 声明变量 !-- 该变量可以再流程的任意状态进行访问 -- var namecustomer classcom.springinaction.pizza.domain.Customer / !-- 计算一个表达式并且放到toppingsList该变量是一个视图作用域变量 -- evaluate resultviewScope.toppingsList expressionT(com.springinaction.pizza.ddomain.Topping).asList() / !-- 将变量设置为表达式计算的结果类似evaluate标签 -- set nameflowScope.pizza valuenew com.springinaction.pizza.domain.Pizza() /8.2.3.2 作用域 范围作用域和可见性Conversation最高层级的的流程开始时创建最高层级的流程结束时销毁。被最高层级的流程和其所有的子流程所共享Flow当流程开始时创建在流程结束时销毁。只有在创建它的流程中是可见的Request当一个请求进入流程时创建在流程返回时销毁Flash当流程开始时创建在流程结束时销毁。在视图状态渲染后它会被清除View当进入视图状态时创建当这个状态退出时销毁。只在视图状态内是可见的 8.3 流程实例 略。。。详细可从书中p234~248获知
http://www.dnsts.com.cn/news/178641.html

相关文章:

  • 临汾网站建设电话企业邮箱号码
  • 装修工人涟源seo快速排名
  • 做安全防护信息的网站宝塔一键部署wordpress最新版
  • 张家港手机网站制作介绍旅游美食的网站模板
  • 郑州哪里做网站网站可以备案先提交类别后来改么
  • 智能云建站设计网站公司长沙
  • 湘潭网站建设选择磐石网络视频素材免费下载素材库
  • 漯河网站建设兼职企业网站建设需要准备什么
  • 重庆公章备案查询网站wordpress 插件游戏
  • 无锡网站科技公司关于新闻管理的网站建设报告
  • 建设银行网站查询密码河北企业信息系统
  • wordpress网站主题网站策划方案实例
  • 什么网站做英语翻译练习国外可以做会员网站的网站
  • 精品课程网站建设项目验收单wordpress相似的nodejs
  • vs怎么建手机网站软件开发网站有哪些
  • 常用设计网站有哪些软件常州网站推广软件
  • 新手做亚马逊要逛哪些网站网页设计与网站开发课程设计
  • 网站可以随便创建么wordpress完整模板
  • 泰安服装网站建设sem技术培训
  • 营销类网站建设需要注意的问题管理咨询公司怎么找客户
  • 建设网站的公司济南兴田德润o评价网站正在建设中的英文
  • 网站域名虚拟货币网站开发
  • 设计精美的国外网站网站一般做多大的
  • 玉林市网站建设宝安福永小学网站建设
  • 带有响应式的网站塘沽网吧
  • 孔为民医生个人网站如何设计一个好网站
  • 华为网站建设官网中小型网站站内搜索实现
  • 网站域名提交wordpress加相册
  • wordpress 分页插件网站优化电话
  • 手机视频网站开发教程壁纸云 wordpress