
J2EE
hackerain
这个作者很懒,什么都没留下…
展开
-
hibernate——java类型、hibernate映射类型、以及SQL类型之间的映射关系
示例:Person类,定义了各种属性:package com.suo.domain;import java.sql.Date;public class Person { private Long id; private String username; private String password; private int telphone; private c原创 2012-01-09 23:18:07 · 1366 阅读 · 0 评论 -
sruts2中ognl表达式的原理
ognl是跟struts2的标签一起使用的。Struts2结合了ognl,在ognl中有根元素的概念,在Struts2中,根对象就是ValueStack,在任何流程当中,ValueStack最顶层的对象,一定是Action对象。除了ValueStack根对象外,Struts2还提供了几个常用的非根对象,叫做命名对象:parameters, request, session, application原创 2012-01-02 17:30:48 · 1477 阅读 · 0 评论 -
ognl初接触
OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。下面在普通的project中,看一下ognl的各种表达式的运用原创 2012-01-02 17:12:31 · 899 阅读 · 0 评论 -
hibernate——继承关系以及三个subclass标签的区别
Java类中有继承关系,相应的在hibernate中,也有继承关系,子类反应到数据库中,就有多种实现形式了,子类和父类可以映射到同一张表中,子类也可以单独映射成一张表,但是用不同的标签实现,子类表和父类表的关系也不同。在映射文件中,有三个标签可以实现继承关系,分别是:subclass、joined-subclass、union-subclass,先陈述一下这三个标签的区别:subclass标签原创 2011-11-30 01:53:46 · 11361 阅读 · 0 评论 -
hibernate——一对一、多对一和多对多关系的比较
现在学习完了这几种映射关系,但是有点乱,这里来小结一下。关键是表之间如何产生映射关系,以及产生的表的结构。1、一对一映射:一对一是通过one-to-one标签来产生映射关系的,其实,如果单单说是建立两个表之间的关联,只要在一个映射文件中配置one-to-one标签就可以了,在另一个映射文件中,也做类似的配置,只会起到关联的作用,建立起双向的关联。这里举Person和IdCard的例子,Id原创 2011-11-28 18:33:57 · 5044 阅读 · 1 评论 -
hibernate——多对多映射
其实不管是什么映射,很关键的一点就是表之间是如何产生映射的。映射关系的产生,关键是在映射文件中配置的,用特定的标签产生特定的映射关系,多对多也不例外。多对多的映射关系,都是转换成多对一的关系,即新增了一个表,来存储两个表之间的关系。此处,我们举一个老师和学生的关系,关键来分析一下,两者是如何产生多对多的映射关系的。先建立两个类:Teacher和Studentpublic class Tea原创 2011-11-28 15:36:02 · 1568 阅读 · 0 评论 -
hibernate——一对一映射(1)
一对一映射本来以为挺简单的,但是一接触发现还是有些琢磨头的,但是理解之后,才会发现原来是挺简单的。一对一映射关系,也有一个主表和从表的概念,例如人和身份证就是一对一的关系,如果将IdCard的主键设为Person的主键,那么Person为主表,而IdCard为从表,这样的映射关系决定了从表不能单独存在,必须依赖于一个主表。但是主表却可以单独存在,因为它不受从表的限制。并且得先有主表中的记录,才原创 2011-11-28 00:47:06 · 1273 阅读 · 0 评论 -
hibernate——多对一和一对多映射浅析
首先应该清楚多对一和一对多只是站在不同的角度看待问题,其本质是一样的。在思考这个问题的时候,不要把这两个概念混在一起,这样不容易理解,而要分开,站在不同的角度去解决同一个问题。就拿员工和部门的例子来说,我们站在不同的角度,可能会遇到如下的几种情况:站在员工的角度看,是多对一的关系: 1、来了新员工,但是还不知道该分配到哪个部门,只有先把员工保存到员工表中,部门那一列设为空,待以后再更新原创 2011-11-27 18:56:52 · 10542 阅读 · 1 评论 -
hibernate——两种查询方式
一种是hql语句查询,用Query接口去实现;一种是条件查询,用Criteria接口去实现。这两种方式作用差不多,只是后者更符合面向对象一些。用hql语句查询,如下例:public static void query(String name){ Session session=null; try{ session=HibernateUtil.getSession();原创 2011-11-26 16:55:26 · 2716 阅读 · 0 评论 -
hibernate——简单的增删改查
增删改比较简单,查稍微复杂一点。查询有两种方式,一种是通过hql语句和Query接口来实现,一种是条件查询,通过Ctiteria接口来实现,下面举例说明:UserDao接口:package com.suo.hibernate.dao;import java.util.List;import com.suo.domain.User;public interface UserD原创 2011-11-26 16:46:12 · 6586 阅读 · 1 评论 -
hibernate——Session接口中定义的saveOrUpdate()方法浅析
Session接口中定义的saveOrUpdate方法,集合了save和update方法,根据对象的状态来选择是进行保存还是更新,那它是怎么判断当前对象的状态的呢?API中对这个方法是这样说的,它是根据一个unsaved-value来决定的。这个值是在映射文件中的标签中的一个属性。标签表示的是表的主键,若主键是字符串,那么这个值默认的是空,如果主键是int型,那么这个值默认的是0。然而我们可以改变原创 2011-11-26 01:47:18 · 11662 阅读 · 3 评论 -
hibernate——和数据库关联的对象的三种状态
和数据库关联的对象有三种状态:瞬时,持久,脱管。瞬时:在数据库中还没有与该对象关联的记录,仅仅是一个普通的对象而已,超过作用域,就会被回收。一般都是new出来的对象,并且还没有与session建立联系。持久:与session建立了联系,并且在数据库中已经有了和该对象关联的记录,并且session没有关闭,事务没有提交,处于持久状态的对象,其状态改变,hibernate会检测到,在进行提交时原创 2011-11-26 00:46:19 · 1691 阅读 · 0 评论 -
hibernate——初步认识
开始学习hibernate了,跟着网上的教学视频边看边学。现在有些迷茫,不知道学这些东西,以后能不能用得上,也不知道未来会发展成什么样子,也不知道我的基础算是打好了没有,总觉得学这些框架,有点浮沙筑高台的感觉,心里很不踏实。知道的都是些表面的东西,框架底层是什么样的,看看那些源代码,想看懂很有难度啊。另外,虽说设计很有魅力,但是基石打不牢,设计也往往是空中楼阁。希望,我在学习的时候和之余,能够多多原创 2011-11-25 15:29:42 · 912 阅读 · 1 评论 -
struts2文件下载
下载相对上传来说就要简单一点了,主要是使客户端获得服务器端的文件输入流,但是在配置Action时,还是有一些要注意的:1)result的type必须为stream类型 2)attachment表示不管什么类型的文件,都要弹出下载对话框,若不指定,则默认为内联形式,即inline,即浏览器能打开的就直接打开,不能打开的就提示保存。3)filename指定的是在保存对话框中,显示的文件的名原创 2011-11-23 20:01:17 · 766 阅读 · 0 评论 -
struts2文件上传
上传文件其实分为两个步骤:首先,将客户端传递过来的文件保存到struts.multipart.saveDir键所指定的目录下,如果没有指定,那么就保存到javax.servlet.context.tempdir环境变量所指定的目录下,然后,Action中所定义的成员变量file,实际指向的是临时目录中的临时文件,在服务器通过IO的方式,将临时文件写入到指定的服务器的目录中。在写表单时,原创 2011-11-23 19:47:55 · 969 阅读 · 0 评论 -
用拦截器实现session登录
这个功能是这样的,用户在访问网站时,先要进行登录,即要访问处理登录的Action,若没有登录,即访问除了登录的Action之外的Action,则会被拦截器拦截,跳转到错误页面,提示用户还没有进行登录。所以这个拦截器的作用是如果是登录,即请求的是LoginAction,那么就不拦截这个请求,让其通过拦截器,进行登录如果请求的是别的Action,若在没有进行登录的情况下,那么拦截器就会起作用,跳转原创 2011-11-21 00:26:37 · 13811 阅读 · 1 评论 -
实现拦截器的三种方法
说是三种方法,实际上是一种方法,其实只要这个类实现了Interceptor接口,即可成为一个拦截器类。第一种方法就是直接实现Interceptor接口,这样的话,就要实现这个接口中的三个方法。第二种方法是继承自AbstractInterceptor类,这是个抽象类,实现了Interceptor接口,并且对里面的init()和destroy()方法进行空实现,而把intercept()方法设原创 2011-11-20 23:55:54 · 16894 阅读 · 3 评论 -
Action的监听器——PreResultListener
这个监听器的作用是在执行完成Action后,在转发到其他Action或是显示结果之前,会调用这个类中的beforeResult()方法,以实现一些功能。通过invocation的addPreResultListener方法对监听器进行注册。示例:监听器类:package com.suo.listeners;import com.opensymphony.xwork2.Actio原创 2011-11-20 23:17:35 · 1981 阅读 · 0 评论 -
Struts2 中拦截器和Action的调用关系
所谓的拦截器就是指实现了Interceptor接口的类,该接口中定义了三个方法:init(),destroy(),intercept()。init()用于在服务器启动的时候,初始化这个拦截器。destroy()用于清理分配给拦截器的资源,intercept()是用来起拦截作用的,这个方法还有一个ActionInvocation类型的参数invocation,并且返回一个字符串。ActionInvo原创 2011-11-19 16:31:52 · 10154 阅读 · 2 评论 -
Struts2中防止表单重复提交的两种方式
防止表单重复提交,这是个很重要的知识点,而且很有用。当用户提交了一个表单,此时,地址栏显示的是处理这个表单的Action的地址,若此时刷新,则会重新发送一次表单数据,即又进行了一次提交,若这个Action是用来处理用户注册的,那么重复提交会再一次向数据库中插入之前已经插入的数据,这显然不是我们想要的。有两种方法,可以防止表单重复提交,一种是用Action的重定向,一种是用Session Token原创 2011-11-19 00:54:41 · 9001 阅读 · 0 评论 -
struts2中的参数传递
这个问题其实一直很困惑我的,在写平常的jsp程序时,传递参数很容易,通过表单,request,链接等都可以传递,但是到了struts2中,在写的各个地方,都看不到任何的request或是response,不知道该怎么传递参数了,到了今天学习了struts2中的参数传递这一节,终于解开了疑惑,但是还不是很清楚,有待以后探索。在这里说一下,struts2中,Action之间如何传递参数。Actio原创 2011-11-19 00:20:41 · 9532 阅读 · 1 评论 -
struts2模型驱动
和模型驱动的相对应的是属性驱动,虽然名字叫的挺牛的,其实很好理解。属性驱动就是在Action中,定义的是和表单中对应的一个个属性,然后有属性的get/set方法。而模型驱动就是事先定义了一个模型,即Model,将表单传递过来的数据封装成一个对象后,再传递给Action,这和Struts1的这种机制很相似。那么这两种方法,哪个好一些呢?还有待实践的检验。。。。。这里还是用登录的例子分析一下模型驱原创 2011-11-16 12:56:09 · 1756 阅读 · 0 评论 -
struts2异常处理
Struts2中的异常处理有两种形式:一种是局部异常处理,一种是全局异常处理在struts.xml中的package下有两个这样的标签:和,前者指定异常处理的类,后者是异常处理结果,通常指定一个显示异常信息的页面。而在action中,也有类似全局的异常处理,和。全局的异常处理可以被该包下所有的action使用,而局部异常处理只能被一个action使用。若在某一个action中抛出了原创 2011-11-16 12:32:29 · 910 阅读 · 0 评论 -
Struts2输入校验以及错误信息处理(2)——用Struts2定义好的校验框架进行校验
Struts2的输入校验有两种方式:一种是用Action中定义的validate()方法进行校验,一种是用Struts2定义好的校验框架进行校验。前者里面的逻辑判断要自己写,而后者只需要传递相应的参数即可。不管是哪种方式,程序执行的流程都是一样的,执行流程如下:1、对表单传递过来的数据,先进行类型转换2、执行校验3、若校验不合法,则跳转到以input命名的resul原创 2011-11-12 20:15:17 · 2638 阅读 · 0 评论 -
Struts2输入校验以及错误信息处理(1)——用Action中定义的validate()方法进行校验
Struts2的输入校验有两种方式:一种是用Action中定义的validate()方法进行校验,一种是用Struts2定义好的校验框架进行校验。前者里面的逻辑判断要自己写,而后者只需要传递相应的参数即可。不管是哪种方式,程序执行的流程都是一样的,执行流程如下:1、对表单传递过来的数据,先进行类型转换2、执行校验3、若校验不合法,则跳转到以input命名的result页面,若合法,原创 2011-11-12 19:02:51 · 2469 阅读 · 0 评论 -
Struts2的自定义类型转换和简单的输入校验
这里关键是对自定义类型的理解,它和8个基本数据类型的地位是一样的,只不过这个是你自己定义的类型。那么在Struts2中什么时候要用到数据类型转换呢?其实,我们一直在用,只是我们没有感觉到而已,Struts2对8个基本数据类型以及Date、String等常见类型,会自动的用内建的类型转换器进行转换,这个工作是Struts2做的,我们只是用到了它这样一种服务而已。比如说在登录页面,用户填写的用原创 2011-11-07 15:15:35 · 1654 阅读 · 0 评论 -
以一个简单的登录的例子来演示如何搭建struts1环境
本例先讲解struts1的工作流程,然后举一个用户登录的例子做演示。struts1的工作流程:struts1是MVC模型的经典应用,以前对MVC的模型理解有错,一直以为C,也就是Control是做业务逻辑的,也就是业务逻辑都是由servlet做的,而JavaBean只起到一个模型的作用,但是到后来,听老师讲课才知道是我理解错了,也是老师之前给举的例子误导了我,到现在学习了strut原创 2011-10-21 02:44:48 · 5700 阅读 · 1 评论 -
处理jsp中文乱码问题(过滤器处理)
其实写个过滤器是很方便的,可以起到“一招封喉”的作用,写了过滤器就不用在jsp的代码中,再考虑各种编码的问题了!请求和回应都会经过这个过滤器,转换成统一的编码格式。下面是过滤器的代码:package com.suo;import java.io.IOException;原创 2011-10-05 17:51:11 · 2101 阅读 · 0 评论 -
用jsp分别连接oracle、mysql数据库
一、连接mysql驱动要放到WEB-INF/lib目录下。驱动可以到官网下载。测试代码: 连接MySql测试页面 <% try { Class.forName("com.mysql.jdbc.原创 2011-10-03 02:35:51 · 5076 阅读 · 0 评论 -
用struts2搭建一个登录的例子
今天学习了struts2的搭建,遇到不少的问题,终于一一解决,写在此处,以作备忘。一、搭建struts2是重点,搭建这个框架有些麻烦。1、 首先要下载struts2的一些组件,我下载的是现在最新的版本2.2.3.1,MyEclipse是9.1版本的。由于版本的不断升级,导原创 2011-10-02 15:24:48 · 28494 阅读 · 2 评论 -
MyEclipse 9.1 破解
下面是如何破解MyEclipse9.1的文章的链接:http://bbs.quanlaila.com/thread-2589-1-1.html转载 2011-10-01 22:01:32 · 826 阅读 · 0 评论 -
一些零碎的知识
1、用word打开当前的页面:response.setContentType("application/msword;charset=gb2312");//将当前页面转换成word文档显示,即在有的浏览器中显示的是下载,比如google,有的会是打开2、自动刷原创 2011-09-19 17:57:09 · 942 阅读 · 0 评论 -
JSP中四种传递参数的方法
今天老师讲了jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用!1、form表单2、request.setAttribute();和request.getAttribute();3、超链接:name4、下面一一举例说明:1、form表单原创 2011-09-14 23:04:49 · 100355 阅读 · 15 评论 -
<jsp:include>和<%@include%>的区别
前天上了jsp的课,老师讲了一下和的区别,由于演示的太快,我没有看太清,所以回来之后,自己又写了个例子,好好看看,还是发现了一些东西的。 :动态包含第一种情况(包含的是html文件):DynamicInclude.jsp:原创 2011-09-10 17:31:59 · 71577 阅读 · 9 评论 -
在局域网中搭建自己的网站
今天上了第一节JSP的课,老师讲了主要讲了如何搭建自己的网站,回来之后,兴奋不已的实践了一把!但由于我们寝室的是局域网,还是遇到一些问题,并不是那么顺利,在这里总结一下,以作备忘!下面是步骤:1、安装配置JDK这里就不多说了,估计都会,我们考试的时候,还专门考了这原创 2011-08-31 22:36:14 · 14475 阅读 · 0 评论