基础知识点

如果你需要在取得孩子(Son)的时候,同时需要知道该孩子的父亲(Father)是谁,你就可以在孩子的映射定义文件Son.hbm.xml里定义孩子跟父亲的关系映射:many-to-one。

同样,如果需要知道某父亲的所有孩子,就可以在父亲的映射定义文件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;






除了使用接口过滤外,还可使用注解过滤:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <!-- 采用自动扫描方式创建mapper bean(批量更新模式) -->  
  2. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  3.     <property name="basePackage" value="com.xxx.dao" />  
  4.     <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplateBatch" />  
  5.     <property name="annotationClass" value="com.xxx.dao.BatchAnnotation" />  
  6. </bean>  

annotationClass配置了该注解的dao才会被扫描器扫描,与basePackage是与的作用。

需要注意的是,两个过滤条件只能配一个。


@JsonFormat注解使用

需要用到com.fasterxml.jackson.annotation.JsonFormat; jackson架包

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date getBirthDate() {
return birthDate;
}

public static void main(String[] args) throws JsonProcessingException {
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、

Jsp代码   收藏代码
  1. <form:form action="formTag/form.do" method="post">  
  2.     <table>  
  3.         <tr>  
  4.             <td>Name:</td><td><form:input path="name"/></td>  
  5.         </tr>  
  6.         <tr>  
  7.             <td>Age:</td><td><form:input path="age"/></td>  
  8.         </tr>  
  9.         <tr>  
  10.             <td colspan="2"><input type="submit" value="提交"/></td>  
  11.         </tr>  
  12.     </table>  
  13. </form:form>  

 

 

       这个时候如果Model中存在一个属性名称为command的javaBean,而且该javaBean拥有属性name和age的时候,在渲染上面的代码时就会取command的对应属性值赋给对应标签的值。如在上面的代码中,假设Model中存在一个属性名称为command的javaBean,且它的name和age属性分别为“Zhangsan”和“36”时,那么它在渲染时就会生成如下一段代码:

Html代码   收藏代码
  1. <form id="command" action="formTag/form.do" method="post">  
  2.     <table>  
  3.         <tr>  
  4.             <td>Name:</td><td><input id="name" name="name" type="text" value="ZhangSan"/></td>  
  5.         </tr>  
  6.         <tr>  
  7.             <td>Age:</td><td><input id="age" name="age" type="text" value="36"/></td>  
  8.         </tr>  
  9.         <tr>  
  10.             <td colspan="2"><input type="submit" value="提交"/></td>  
  11.         </tr>  
  12.     </table>  
  13. </form>  
hidden标签

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匹配规则

1.  写法
①完全匹配:以“/”开头,以字母(非“*”)结束
   如:<url-pattern>/test/list.do</url-pattern>
②目录匹配:以“/”开头且以“/*”结尾
   如:<url-pattern>/test/*</url-pattern>
   <url-pattern>/*</url-pattern>
③扩展名匹配:以“*.”开头,以扩展名结束
   如:<url-pattern>*.do</url-pattern>
④ “/” 用来表明对应的Servlet为应用默认的Servlet。在这种情况下Servlet路径是请求的URI去掉上下文路径并且路径信息为null。
其匹配规则和顺序如下:<o:p></o:p>
1.     精确路径匹配。例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先 进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。<o:p></o:p>
2.     最长路径匹配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。<o:p></o:p>
3.     扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action<o:p></o:p>
4.     如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet


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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值