2017-06-28 09:57:08    121    0    0

1、在conf目录中新建Catalina\localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了。

在Tomca的安装目录 conf/Catalina/localhost下,里面有Tomcat自带的三个应用,随意复制其中的一个XML文件,然后修改docbase指向你自己的应用程序,并把文件名改名,

改xml文件的内容为:

<Context path="/hellooo" docBase="D:/myWork" 

reloadable="false" debug="0"

privileged="true" >

</Context>

xml的文件名必须和path的名字一致。

 (注意xml文件名(例如:hello.xml)将作为Context中的path属性值,不管文件里的path属性值如何设置也是无效的)

上面例子的访问路径是:http://localhost:8080/hello

 

2、直接放到Webapps目录下

Tomact的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。也可以将JSP程序打包成一个war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成同名的文件夹,一个war包就是有特性格式的jar包,它是讲一个Web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse、NetBeans、ant、JBuilder等。也可以用cmd

命令: jar -cvf applicationname.war package.*

  将HelloWeb目录拷贝到$CATALINA_HOME/webapps下,然后启动服务器就可以了,Tomcat启动时应用自动加载。访问地址:http://localhost:8080/hello/

    Webapps这个默认的应用目录也可以改变。打开Tomcat的conf目录下的server.xml文件,找打下面的内容:

<Host  name="localhost"appBase="webapps"

 unpackWARs="true"autoDeploy="true"  xmlValidation="false"xmlNamespaceAware="false">

将appBase修改即可.

3 . 在server.xml

2017-06-26 17:23:44    186    0    0


 

Java中用类java.util.Date对日期/时间做了封装,此类提供了对年、月、日、时、分、秒、毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等。 
java.util.Date中采用一个long型的数来保存日期/时间,它表示从格林威治时间1970年1月1日00点00分00秒至今的毫秒数。 
JDBC中,在这个类的基础之上扩展了3个类:java.sql.Date,java.sql.Time,java.sql.Timestamp。 
java.sql.Date表示日期,只包括年月日; 
java.sql.Time表示时间,只包括时分秒; 
java.sql.Timestamp表示时间戳,包括年月日,时分秒,还有毫秒和纳秒;值得注意的是它比java.util.Date还多了一个纳秒。 

这3个类分别对应数据库的3种数据类型: 
java.sql.Date 日期(只包括年月日) 
java.sql.Time 时间(只包括时分秒) 
java.sql.Timestamp 日期/时间(包括年月日,时分秒,还有毫秒和纳秒) 

有了上面的一些基础知识,下面介绍一些处理技巧。 


 1.对于数据库种不同的时间类型,要分别采用与之相对应的Java包装类来存取; 
日期类型用java.sql.Date,时间类型用java.sql.Time,日期/时间类型用java.sql.Timestamp; 
这里举个例子:假设要从oracle中获取系统时间,需要执行sql:select sysdate from dual,然后在通过ResultSet获取查询结果时,一定要调用方法:getTimestamp(),这样才可以把年月日时分秒都取出来,调用getDate()只能取出年月日,调用getTime()只能取出时分秒。 
调用getString也可以取出来,但是存在问题,见技巧2。 


 2.尽量不要调用getString()来获取日期/时间类型的数据; 
调用getString()也可以取出时间类型的数据,JDBC在内部将日期/时间转换为字符串;但是这个字符串的格式却取决于数据库,用Oracle是一种,用Sybase又是一种,mysql又是一种,如果你想兼容多种数据库,还是不要用getString()的好。 
另外,采用字符串来保存时间存在一些问题,我在另外一篇帖子中解释过(见:Java中日期/

2017-06-26 09:19:49    156    0    0
 

Hibernate与 MyBatis的比较

 


第一章     Hibernate与MyBatis

Hibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。

MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html  

Hibernate参考资料: http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html_single/

1.1 Hibernate 简介

Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。

1.2 MyBatis简介

iBATIS 的着力点,则在于POJO 与SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。

第二章 开发对比

开发速度

Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。

开发社区

Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8。而Mybatis相对平静,工具较少,当前最高版本3.2。

开发工作量

Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。

针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。

2017-06-09 15:50:01    127    0    1

函 数                                              用 途
length(object)                              显示对象中元素/成分的数量
dim(object)                                   显示某个对象的维度
str(object)                                     显示某个对象的结构
class(object)                                  显示某个对象的类或类型
mode(object)                                显示某个对象的模式
names(object)                              显示某对象中各成分的名称
c(object, object,…)                       将对象合并入一个向量

cbind(object, object, …)               按列合并对象
rbind(object, object, …)               按行合并对象
Object                                             输出某个对象
head(object)                                  列出某个对象的开始部分
tail(object)                                      列出某个对象的最后部分
ls()                                                    显示当前的对象列表
rm(object, object, …)                    删除一个或更多个对象。语句

rm(list = ls())                                   将删除当前工作环境中的几乎所有对象*
newobject <- edit(object)             编辑对象并另存为newobject
fix(object)                                       直接编辑

2017-06-09 13:53:55    62    0    0

由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更
为一般。它与你通常在SAS、SPSS和Stata中看到的数据集类似。数据框将是你在R中最常处理的
数据结构。

1.创建一个数据框

< age<-c(20,21,30,23)
< name<-c("cj","zq","zp","wc")
< game<-c("dota2","coc","lol","王者荣耀")
< t<-data.frame(name,age,game)
< t
输出:
  name age     game
1   cj  20    dota2
2   zq  21      coc
3   zp  30      lol
4   wc  23 王者荣耀

2.选取框中元素

> t[1:2]
输出:
  name age
1   cj  20
2   zq  21
3   zp  30
4   wc  23

> t[c("age","game")]
  age     game
1  20    dota2
2  21      coc
3  30      lol
4  23 王者荣耀

3.生成联列表,用来分析各个字段之间的关联性

> table(t$age,t$game)
    
     coc dota2 lol 王者荣耀
  20   0     1   0        0
  21   1     0   0        0
  23   0     0   0        1
  30   0     0   1        0


2017-02-10 10:46:02    16    0    1

create tablespace test datafile 'D:\test.ora' size 1000m ---test为空间名,'D:\test.ora'存放路径
create user test identified by test default tablespace test quota 500m on users ---这里第一个test为用户名,第二个test为密码,第三个test为表空间名。
grant all privileges to test ---执行该语句给test用户授权

2017-02-09 13:49:32    147    0    1

1. 说明

搭建SpringMVC+spring+hibernate的框架,项目结构如图1所示 
图1 项目结构图 
引用的jar包为Spring3.2.6和Hibernate4,如图2所示 
图2 引用的所有jar包

2. 配置文件

2.1 spring-mvc.xml

注意看其中的注释内容,写的比较详细

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.2.xsd  
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"
    default-autowire="byName">

    <!-- 开启注解,java文件里的@ -->
    <mvc:annotation-driven />

    <!-- 注解扫描包,注意换成自己的路径 -->
    <context:component-scan base-package="com.lq.controller">
        <!-- 只扫描@Controller的部分 -->
 
2017-02-07 14:11:45    138    0    0

1 新建 properties格式文件 设置 key=value格式的值
2 在配置文件中注入 bean
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:configfilename.properties</value>
</list>
</property>
</bean>



3 用private final String key = ResourceBundle.getBundle("configfilename").getString("key");获取相应的值

2017-02-07 14:01:58    151    0    0

在写程序时,想要获取某个资源文件,或想访问某个Servlet,如果路径写不对,就找不到该文件,或访问失败。由此可见,路径很重要。下面我们就来一一分析如何正确找到资源文件及访问Servlet。

1.Servlet访问路径

Servlet的访问路径是在web.xml文件中配置的,如下所示:

<url-pattern>Servlet访问路径</url-pattern>

Servlet访问路径有如下两种书写方式:

l路径以“/”开头

l路径以“*“开头

Servlet的访问路径要么以“/”开头,要么以“*”开头,但是在Servlet中,现在很少使用“*”开头,在后面将要学习的过滤器中会使用它来匹配要过滤的资源。

2.请求转发和请求包含路径

请求转发和请求包含需要给出即将转发和包含资源的路径,例如:

request.getRequestDispatcher(“/BServlet”).forward(request,response),表示要转发到BServlet。request对象的getRequestDispatcher(Stringpath)方法的参数有如下两种书写方式:

l以“/”开头:

相对当前项目路径,即:http://localhost:8080/项目名,例如:request.getRequestDispatcher(“/BServlet”)表示转发或包含路径为http://localhost:8080/项目名/BServlet的Servlet。

l不以“/”开头:

相对当前Servlet的路径,例如:当前Servlet是AServlet,访问它的路径为http://localhost:8080/项目名/servlet/AServlet,那么request.getRequestDispatcher(“BServlet”)就相当于,转发或包含路径为http://localhost:8080/项目名/servlet/BServlet的Servlet。

以上两种书写方式中,以“/”开头的路径是绝对路径,不以“/”开头的路径是相对路径。为了以后的开发简便,建议大家采用第一种方式,即以“/”开头的路径。

3.重定向路径

进行重定向时,需要给出将要重定向的资源的路径,例如:

response.sendRedirect(“/Example/B

2017-02-07 11:50:43    200    0    0

事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性。
spring支持编程式事务管理和声明式事务管理两种方式。
编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。

声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。

声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。

spring事务特性
spring所有的事务管理策略类都继承自org.springframework.transaction.PlatformTransactionManager接口
其中TransactionDefinition接口定义以下特性:

事务隔离级别

隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量:

TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是TransactionDefinition.ISOLATION_READ_COMMITTED。
TransactionDefinition.ISOLATION_REA

1/2