首页 文章 精选 留言 我的

精选列表

搜索[后台会话],共10006篇文章
优秀的个人博客,低调大师

Laravel 前后台共享数据

在视图模板中初始化JS变量。 <script> var app = <?php echo json_encode($array); ?>; </script> 5.5以后可以这么写, 用 @json Blade 指令替代手动 json_encode <script> var app = @json($array); </script> 曾经在多语言项目中这么用过。 <script> window.Laravel = { csrfToken: '{{ csrf_token() }}', Locale: '<?php echo \App::getLocale(); ?>', Languages: <?php echo json_encode( [ 'scaffold' => __('scaffold::t'), 'module_dashboard' => __('module_dashboard::t'), 'module_user' => __('module_user::t'), 'setting' => __('setting::t'), ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);?> }; </script> Laravel变量传入在vue组件中 定义组件 <script> export default { props: ['surveyData'], mounted () { // Do something useful with the data in the template console.dir(this.surveyData) } } </script> 注入变量 <survey-component :survey-data="'{!! json_encode($surveyData) !!}'"></survey-component> 参考:https://medium.com/@m_ramsden/passing-data-from-laravel-to-vue-98b9d2a4bd23https://laravel-china.org/docs/laravel/5.6/blade/1375

优秀的个人博客,低调大师

后台(38)——SqlMapConfig.xml

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)— 核心基础 Android多分辨率适配框架(2)— 原理剖析 Android多分辨率适配框架(3)— 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 自定义View系列教程08–滑动冲突的产生及其处理 版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 在之前关于Mybatis的示例中我们采用SqlMapConfig.xml配置数据库连接池和管理mapper.xml,今天我们来继续学习SqlMapConfig.xml常用的其他配置。 SqlMapConfig.xml中配置的内容和顺序如下: properties settings typeAliases typeHandlers objectFactory plugins environments environment transactionManager dataSource mappers 在此,介绍几个常用的。 properties 我们可将一些配置信息专门写在对应的配置文件中,然后在SqlMapConfig.xml引用即可。比如,将数据库配置信息置于db.properties中: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mb?characterEncoding=utf-8 username=root password=root 然后在SqlMapConfig.xml中引用 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="db.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="sqlmap/StudentMapper.xml" /> </mappers> </configuration> 引入db.properties,请参见代码第4行 使用db.properties中的内容,请参见代码第9—12行 setting 可在SqlMapConfig.xml中利用setting配置全局参数从而作用于MyBatis的行为 <settings> <setting name="cacheEnabled" value="true" /> <setting name="lazyLoadingEnabled" value="true" /> <setting name="multipleResultSetsEnabled" value="true" /> <setting name="useColumnLabel" value="true" /> <setting name="useGeneratedKeys" value="false" /> <setting name="autoMappingBehavior" value="PARTIAL" /> <setting name="defaultExecutorType" value="SIMPLE" /> <setting name="defaultStatementTimeout" value="25" /> <setting name="safeRowBoundsEnabled" value="false" /> <setting name="mapUnderscoreToCamelCase" value="false" /> <setting name="localCacheScope" value="SESSION" /> <setting name="jdbcTypeForNull" value="OTHER" /> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" /> </settings> 关于这些setting的具体作用,请官方文档,在此不再赘述 typeAliases typeAliases可为Java类型设置一个短的名字从而减少类完全限定名的冗余. MyBatis已经为许多常见的Java类型内建了相应的类型别名,如下所示: 在mapper.xml中会定义很多的statement,每个statement需要利用parameterType指定输入参数的类型、利用resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径会非常的繁琐,所以我们可利用typeAliases为这些类指定别名,从而提高开发效率 比如,我们可以为单个类指定别名 <typeAliases> <typeAlias type="cn.com.Student" alias="Student" /> </typeAliases> 所以在mapper.xml中将parameterType指定为Student即可 <insert id="insertStudent" parameterType="Student"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO student (name,gender,birthday) value (#{name},#{gender},#{birthday}) </insert> 当然,我们还可以为某个包下所有类指定别名。 <typeAliases> <package name="cn.com"/> </typeAliases> 这些包下的类名所对应的别名就不再是全路径了,而是java文件本身的名字了。比如cn.com.Student的别名就是Student typeHandlers 无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用typeHandlers类型处理器将获取的值以合适的方式进行转换。简单地说:MyBatis中通过typeHandlers完成JDBC类型和Java类型的转换。Mybatis默认为我们实现了许多TypeHandler, 当我们没有配置指定TypeHandler时,Mybatis会根据参数或者返回结果的不同为我们选择合适的TypeHandler进行数据转换处理。 mappers mappers用于配置SQL映射文件 第一种方式 <mappers> <mapper resource="sqlmap/StudentMapper.xml" /> </mappers> 利用resource加载单个映射文件,我们在MyBatis的入门示例中就是如此配置的。 第二种方式 通过mapper接口(mapper.java)加载单个映射文件(mapper.xml) <mappers> <mapper class="cn.com.StudentMapper"/> </mappers> 利用该方式配置mapper时务必注意:必须将xxxmapper.xml和xxxmaper.java置于同一个包下,且文件名必须一致。 第三种方式 批量配置mapper <mappers> <package name="cn.com"/> </mappers> 配置一个包中的mapper。利用该方式配置mapper时务必注意:必须将xxxmapper.xml和xxxmaper.java置于同一个包下,且文件名必须一致。

优秀的个人博客,低调大师

后台(07)——XML和JUnit

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)— 核心基础 Android多分辨率适配框架(2)— 原理剖析 Android多分辨率适配框架(3)— 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 自定义View系列教程08–滑动冲突的产生及其处理 版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 本文简介 本文主要介绍XML及其常用的解析方式和JUnit单元测试 XML简介 eXtensible Markup Language简称XML,它是一门可扩展标记语言;之所以称其为可扩展语言,是因为XML的标签都是自定义的。与HTML用于数据展示不同,XML主要用于数据的存储,比如Web开发中的众多配置文件都是由XML实现的。除了作用不一样以外,XML较HMTL而言语法也更加严格。 现在,我们来看一个非常简单的XML文件 <?xml version="1.0" encoding="UTF-8"?> <students> <student number="1"> <name>空空苍井</name> <age>23</age> <address>东京</address> </student> <student number="2"> <name>小泽玛丽</name> <age>22</age> <address>大阪</address> </student> <student number="3"> <name>杉原杏璃</name> <age>19</age> <address>仙台</address> </student> </students> 在该示例中定义了根标签<students></students>然后在里面放了三个<student></student>标签用于表示每一个学生的信息;其中每个学生又包括了name,age,address 请注意XML的书写规范: 将<?xml version=”1.0” encoding=”UTF-8”?>置于XML文档第一行 XML文档中必须有且仅有有一个根元素 XML文档中的元素需要正确闭合 XML文档中的元素需要正确嵌套 XML文档中的元素名称区分大小写 XML文档中的属性值必须用引号引起来 XML的约束 我们可以通过XML的约束来限制XML内容的书写,就像在Java中为集合指定了泛型来约束存入集合中的数据一样;我们可在约束文档定义在XML中允许出现的元素名称、属性及元素出现的顺序等等。XML中常用的约束有DTD和Schema,现在分别介绍。 DTD DTD(Document Type Definition)文档类型定义,请看如下示例: <!ELEMENT students (student*) > <!ELEMENT student (name,age,address)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT address (#PCDATA)> <!ATTLIST student number ID #REQUIRED> 在此定义一个.dtd文件,在该文件中约束了xml的元素和属性。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE students SYSTEM "studentDTD.dtd"> <students> <student number="number1"> <name>空空苍井</name> <age>23</age> <address>东京</address> </student> <student number="number2"> <name>小泽玛丽</name> <age>22</age> <address>大阪</address> </student> <student number="number3"> <name>杉原杏璃</name> <age>19</age> <address>仙台</address> </student> </students> 我们在该XML文件中使用刚才定义的DTD文件,请参见第2行代码。此时,我们假如写了DTD中未声明的标签就会报错;类似地,其他未遵守DTD文件的写法也会报错。其实,利用DTD文件约束XML的方式还是有些呆板,可读性也不强。所以,请看下面的Schema约束。 Schema Schema也是一种用于定义和描述XML文档结构与内容的模式语言,其出现是为了优化DTD的局限性。请看如下示例: <?xml version="1.0"?> <xsd:schema xmlns="http://www.stay4it.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.stay4it.com" elementFormDefault="qualified"> <xsd:element name="students" type="studentsType" /> <xsd:complexType name="studentsType"> <xsd:sequence> <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="studentType"> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="age" type="ageType" /> <xsd:element name="gender" type="genderType" /> </xsd:sequence> <xsd:attribute name="number" type="numberType" use="required" /> </xsd:complexType> <xsd:simpleType name="genderType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="male" /> <xsd:enumeration value="female" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ageType"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0" /> <xsd:maxInclusive value="130" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="numberType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="stay4it_\d{3}" /> </xsd:restriction> </xsd:simpleType> </xsd:schema> 在此定义一个.xsd文件,在该文件中约束了xml的元素和属性。请注意,在该文件中的限制条件非常细致。比如:限制了元素的类型,取值范围,出现次数等。 <?xml version="1.0" encoding="UTF-8"?> <students xmlns="http://www.stay4it.com" xsi:schemaLocation="http://www.stay4it.com studentSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <student number="stay4it_101"> <name>空空苍井</name> <age>23</age> <gender>female</gender> </student> <student number="stay4it_102"> <name>小泽玛丽</name> <age>22</age> <gender>female</gender> </student> <student number="stay4it_103"> <name>杉原杏璃</name> <age>19</age> <gender>female</gender> </student> </students> 在该XML文档中采用刚才定义的Schema约束XML的书写。同样地,如果所书写的XML代码违反了该Schema约束那么会报错。 XML文档的解析方式 常用的解析XML文档的方式有DOM解析和SAX解析。 DOM解析 将XML文档加载进内存形成一颗DOM树(document对象)并将文档的各个组成部分封装为对象。所以,可以对DOM树进行增删改查。但是DOM树非常占内存,解析速度较慢,故DOM解析不适合较为复杂的XML文件。 如果说Java是面向对象编程,那么DOM是面向节点编程 1 、整个XML文档就是一个文档(Document)节点。 2 、文档中每个元素是也是一个元素(Element)节点 3 、元素中的文字则是文本(Text)节点。 4 、元素的属性是属性(Attr)节点。 5 、标签之间的空格换行也是节点! 6 、总之,XML文档中的每个成分都是一个节点 由此可见,XML文档中每一个组成部分都是节点。所以,元素一定是节点,而节点不一定是元素。 SAX解析 相比于DOM,SAX是一种速度更快,更有效的方法。SAX基于事件驱动,它逐行读取文档,一边读取一边解析,所以该方式占内存非常小,速度很快。而且在解析过程的任意时刻均可停止解析,但是该方式只能读取XML不能回写。 在开发中常用DOM4J和XPATH解析XML文件,先对其分别介绍。 利用DOM4J解析XML 请看如下示例: package cn.xml; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.junit.Test; /** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */ public class TestDOM4J { @Test public void testDOM4J01() throws DocumentException{ SAXReader reader = new SAXReader(); Document document = reader.read("src/student.xml"); Element rootElement = document.getRootElement(); List<Element> elementList = rootElement.elements(); int elementSize=elementList.size(); int nodeCount=rootElement.nodeCount(); System.out.println("根节点一共有"+elementSize+"个子元素"); System.out.println("根节点一共有"+nodeCount+"个子节点"); } @Test public void testDOM4J02() throws DocumentException{ SAXReader reader = new SAXReader(); Document document = reader.read("src/student.xml"); Element rootElement = document.getRootElement(); analyzeElement(rootElement); } private void analyzeElement(Element element) { int nodeCount=element.nodeCount(); for (int i = 0; i < nodeCount; i++) { Node node = element.node(i); if(node instanceof Element){ Element elem=(Element) node; String elementName=elem.getName(); List<Attribute> attrivuteList=elem.attributes(); int attributeSize=attrivuteList.size(); System.out.println(elementName+"有属性"+attributeSize+"个"); for(int j=0;j<attributeSize;j++){ Attribute attribute=attrivuteList.get(j); String attributeName=attribute.getName(); String attributeText=attribute.getText(); System.out.println(elementName+"有属性:"+attributeName+",其值为:"+attributeText); } analyzeElement(elem); System.out.println(elementName+"是元素Element"); }else{ String nodeText=node.getText(); System.out.println(nodeText+"文本是节点Node"); } System.out.println("-------------------"); } } } 在该示例中展示了利用DOM4J加载XML,并解析出XML中的元素和节点且获取出元素的名称,节点的文本,属性的值等等内容。在此,务必注意区分元素和节点;请切记:标签之间的空格换行也是一个节点!!!!至于,DOM4J的其他API在此不在依次举出。 当你看完这个例子,如果还不了解元素和节点的区别,请您参照w3school的教程 利用XPATH解析XML XPATH的全称是Xml Path Language;专门用于查询XML中的数据。怎么查询呢?嗯哼,其实从它的全名可以就能看出点端倪了:该方式和路径是相关联的。 请看如下示例: package cn.xml; import java.util.List; import org.dom4j.Document; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.junit.Test; /** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */ public class TestXPATH { @Test public void testXPATH1() throws Exception{ SAXReader read = new SAXReader(); Document document = read.read("src/student.xml"); Node node = document.selectSingleNode("/students/student[1]/name"); String text=node.getText(); System.out.println(text); } @Test public void TESTXPATH2() throws Exception{ SAXReader read = new SAXReader(); Document document = read.read("src/student.xml"); List<Node> nodeList = document.selectNodes("//*"); for (int i = 0; i < nodeList.size(); i++) { Node node = nodeList.get(i); String name=node.getName(); String text=node.getText(); System.out.println(name+"\t"+text); } } } 现对该示例解析如下: 查询单个学生的名字,请参见代码第19行 在student.xml中一共有三个学生,在此获取第一个学生的名字 获取student.xml中所有的节点,请参见代码第28行 关于XPATH的更多规则请您参见XPathTutorial JUnit单元测试 为测试方便,可用JUnit进行测试。比如写一个方法,将待测试的代码置于方法体内即可。在使用过程中,请注意: 1、测试方法的返回值为void 2、测试方法无输入参数 3、测试方法需是public的 4、利用Assert测试结果是否正确 示例如下: package cn.com; import junit.framework.Assert; import org.junit.Test; /** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */ public class TestJUnit { @Test public void test1(){ int c=1+2; Assert.assertEquals(3, c); } @Test public void test2(){ int c=1+2; Assert.assertEquals(4, c); } } 最后,贴出项目结构图,如下所示:

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册