同样,如果需要知道某父亲的所有孩子,就可以在父亲的映射定义文件Father.hbm.xml里定义父亲跟孩子的关系映射:one-to-many。
one 可以定义成字典表。
1.对于tag文件
<%@ taglib prefix="ui" tagdir="/WEB-INF/tags" %>
其中的tags是个目录,里面有若干tag文件。
但使用<ti:XXXX>时,目录WEB-INF/tags下,必然有个XXXX.tag文件与之对应。
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)
private static final long serialVersionUID = 1L;
除了使用接口过滤外,还可使用注解过滤:
- <!-- 采用自动扫描方式创建mapper bean(批量更新模式) -->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.xxx.dao" />
- <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplateBatch" />
- <property name="annotationClass" value="com.xxx.dao.BatchAnnotation" />
- </bean>
annotationClass:配置了该注解的dao才会被扫描器扫描,与basePackage是与的作用。
需要注意的是,两个过滤条件只能配一个。
@JsonFormat注解使用
需要用到com.fasterxml.jackson.annotation.JsonFormat; jackson架包
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date getBirthDate() {
return birthDate;
}
TestUserGaoguangjin tg = new TestUserGaoguangjin();
tg.setBirthDate(new Date());
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(tg);
System.out.println(json);
}
//{"id":null,"isNewRecord":true,"remarks":null,"createDate":null,"updateDate":null,"cardId":null,"name":null,"sex":null,"birthDate":"2015-05-05 01:49:17"}
spring form 表单使用
1、页面要引入
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
2、
- <form:form action="formTag/form.do" method="post">
- <table>
- <tr>
- <td>Name:</td><td><form:input path="name"/></td>
- </tr>
- <tr>
- <td>Age:</td><td><form:input path="age"/></td>
- </tr>
- <tr>
- <td colspan="2"><input type="submit" value="提交"/></td>
- </tr>
- </table>
- </form:form>
这个时候如果Model中存在一个属性名称为command的javaBean,而且该javaBean拥有属性name和age的时候,在渲染上面的代码时就会取command的对应属性值赋给对应标签的值。如在上面的代码中,假设Model中存在一个属性名称为command的javaBean,且它的name和age属性分别为“Zhangsan”和“36”时,那么它在渲染时就会生成如下一段代码:
- <form id="command" action="formTag/form.do" method="post">
- <table>
- <tr>
- <td>Name:</td><td><input id="name" name="name" type="text" value="ZhangSan"/></td>
- </tr>
- <tr>
- <td>Age:</td><td><input id="age" name="age" type="text" value="36"/></td>
- </tr>
- <tr>
- <td colspan="2"><input type="submit" value="提交"/></td>
- </tr>
- </table>
- </form>
path相当于后台存放的key
<form:hiddenpath="id"/>
加载Spring配置文件时,如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时,会自动调用ApplicationContextAware 接口中的
public void setApplicationContext(ApplicationContext context) throws BeansException方法,获得ApplicationContext对象。
前提必须在Spring配置文件中指定该类
public class ApplicationContextRegister implements ApplicationContextAware {
private Log log = LogFactory.getLog(getClass());
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
ContextUtils.setApplicationContext(applicationContext);
log.debug("ApplicationContext registed");
}
}
安全框架:让Apache Shiro保护你的应用
面向接口编程的用例
1、最最常见的DAO模式,程序运行的时候针对一个DAO接口只有一个实现存在于jvm中,这种情况下虽然在运行时无法实现接口和实现的一对多关系,但当某天需要针对另一种数据库进行移植的时候,只需要DAO的实现发生变化即可,调用DAO的Service层不用任何变化。
2、还有最最常用的Servlet,我们在编写自己的Servlet程序的时候,用的是HttpServletRequest接口和HttpResponse接口而不是具体的实现,那么我们的程序可以运行于Tomcat上,可以运行于Jetty上,可以运行于WebLogic上,而无需任何更改、变化。
session里面存放对象 需要被序列化
textarea 不想有空格就写到同一行
Servlet的url-pattern匹配规则
Arrays.asList("role1", "role2") ,将字符串组转换成list
url模式使用Ant风格模式
Ant路径通配符支持?、*、**,注意通配符匹配不包括目录分隔符“/”:
?:匹配一个字符,如”/admin?”将匹配/admin1,但不匹配/admin或/admin2;
*:匹配零个或多个字符串,如/admin*将匹配/admin、/admin123,但不匹配/admin/1;
**:匹配路径中的零个或多个路径,如/admin/**将匹配/admin/a或/admin/a/b。
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
liunx和windows 对于file路径是有区别的,以后凡是涉及到路径分隔符的就要用File.separator。
比如我们对路径进行替换或者切割,分隔符不能写死,需要用到File.separator
2、过滤文件
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<!-- 包含 -->
<includes>
<include>**/*.vm</include>
<include>**/*.properties</include>
</includes>
<!-- 排除 -->
<excludes>
<exclude>**/*.log</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.*</include>
</includes>
<excludes>
<exclude>**/*.log</exclude>
</excludes>
</resource>
</resources>
</build>
svn 删除文件夹或者文件
选中文件 然后右键选中TortoiseSVN 里面的带红色的 delte按钮进行删除 这样会把本地的也会一起删除,不能直接用window自带的那个删除键
svn 拷贝项目 到别的地址
去掉里面自带的.svn 可以这样弄 选中项目 然后右键TortoiseSVN==> Export
eclipse 字符集问题
今天遇到这样的情况,新增了一个css文件,但是也没里面调用不到,最后定位到是因为文件字符集的问题,新增的文件默认格式是gbk,如果我们项目工程师utf-8,那么就需要我们手动去修改文件格式 或者在文件创建的时候 设定系统全局的字符集 windows->Preferences =》general->Workspace =》Text file encoding
1、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
2、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text中每一个子项,并将其编码设置为"UTF-8",点update!
其他java应用开发相关的文件如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。
3、window-->preference-->MyEclipse-->Files and Editors,将每个子项的"Encoding"改为"ISO 10645/Unicode(UTF-8)",点Apply!
--拷贝
INSERT INTO cms.sys_menu select * from jeesite.sys_menu where id=92