`

SSH和Ajax的整合

阅读更多
整合步骤总结:
1,action中利用request.getParameter("*",x)可以获得jsp页面传过来的参数
2,jsp页面中加<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>后
<bean:parameter id="cid" name="companyId" />获得参数,使用方法:${cid}
<bean:define id="c" name="company" ></bean:define>获得对象,使用同上

3,hibernate中:一对多关系中,hibernate默认是懒的初始化(lazy=true),这样当你查询一的一方时,它不会级联查询多的一方,这样单的一方就没办法使用保存在类中多的一方的属性
如果想使用就必须在多的一方中加上lazy=false,如:
<many-to-one name="company" column="company_id"  lazy="false"></many-to-one>
当多的一方是通过外键指向单的一方主键时:默认的

4,jsp页面中实现国际化方法:

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
	<html:messages id="error" name="errorMessages">
		<font color="red">${error}</font>
	</html:messages>	其中name为配置文件中写的
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
	<bean:message key="login.title"/>	key中为配置文件写的

5,页面编码问题:
通常可以通过写过滤器来解决,但是写了过滤器之后,还可能出现页面乱码,url不支持中文传输,所有通常在传中文时最好用post方法(表单实现,get是用url实现),如果要用get也可以在tomcat中conf.server.xml文件中找到修改端口的地方加上URIEncoding="编码方式"即可。

6,级联删除:
如果想删除A表,但是B表的一个外键指向A表,关系维护在B表中,这时要向删除A表中的数据,首先要查出B表中指向A表的数据,然后把B表中的外键设为空,在删除A表中数据。
如果两个表都维护关系,写级联就OK

7,通过hibernate配置文件自动创建表:
(1)写好实体,和详细的xml影射文件
(2)在hibernate配置文件中添加
<!-- 此属性可以自动生成sql语句,自动创建表
<property name="hbm2ddl.auto">create</property>
-->
(3)然后在main方法中执行:ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
加载后即可生成sql语句。

8,利用PowerDesigner通过代码生成关系图:
file--->reverse engineer--->datebase--->弹出对话框
输入名字,选择数据库,单击确定
添加.sql文件后单击确定后可以生产图。

9,以下代码很有效:实现了分页查询所有对象的模板  //  <T>定义泛型

public <T> List<T> selectAllObject(Class<T> clazz,Page page) {
		String hql0 = "select count(*) from " + clazz.getSimpleName();
		String hql = "from " + clazz.getSimpleName();
		List<T> Objects = new ArrayList<T>();
		//  query()是分页实现方法
		for(Object obj : this.query(hql0, null, hql, null, page)){
			Objects.add((T) obj);
		}
		return Objects;
}


实现用对象或对象的属性实现分页查询:
/**实现HibernateCallback()方法所传的参数必须是final的,
*final T exampleEntity : 传过来的实体对象      final String propertyName :实体对象的属性名字
*final Object startData,final Object endData :通过时间查询时需要      final Page page :分页时需要
*/

import org.hibernate.Criteria;
	import org.hibernate.HibernateException;
	import org.hibernate.Query;
	import org.hibernate.Session;
	import org.hibernate.criterion.Criterion;
	import org.hibernate.criterion.Example;
	import org.hibernate.criterion.Expression;
	import org.springframework.orm.hibernate3.HibernateCallback;
	import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

	protected <T> List<T> selectByExampleEntity(final T exampleEntity,final String propertyName,
	  	final Object startData,final Object endData,final Page page) {
		Object object = getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session) throws HibernateException, SQLException {
				Example example = Example.create(exampleEntity); //通过实例创建Example
					//通过session获得标准
				Criteria criteria = session.createCriteria(exampleEntity.getClass());
						//如果以下这3个参数都不为空的时候执行
						//propertyName是两个时间对应的列的名字,两个时间是同一列的不同结果
				if(propertyName != null && startDate != null && endDate != null){
					Criterion c = Expression.between(propertyName, startDate, endDate);
					criteria.add((Criterion) c);
				}
				criteria.add(example);
				page.setOrderCount(new Long(criteria.list().size()));
				criteria.setFirstResult((page.getPageNumber()-1)*page.getMax());
				criteria.setMaxResults(page.getMax());
				return criteria.list();
			}
		});
		return (List<T>) object;
	}

10, 在hibernate.hbm.xml文件配置中指定lazy="false"的话,固然可以在查询该对象的时候将其关系对象
   一并查询出来,只是影响全局,或许我们只是想在某些情况下顺带查询关系对象,在不需要的时候则
   浪费了查询时间以及内存空间。为了缩小影响范围,我们可以不指定lazy="false",只是在web.xml
   文件中,配置一个spring提供的过滤器,如此便可在一次连接的范围内扩大事务,即使事务结束、Session
   被关闭,再获取关系属性一样可行(school.getStudents() ... ),使用如下所示 :
  
<filter>
		 <filter-name>OpenSessionInViewFilter</filter-name>
		  	 <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
		  <init-param>
		  	<param-name>singleSession</param-name>
		  	<param-value>true</param-value>
		  </init-param>
		  <init-param>
		  		<param-name>sessionFactoryBeanName</param-name>
		  		<!-- 对应spring.xml中的id -->
		  		<param-value>sessionFactory</param-value>
		  </init-param>
		  </filter>
		  <filter-mapping>
		  	<filter-name>OpenSessionInViewFilter</filter-name>
		  	<!-- 指定要扩大事务的连接(一次请求) -->
		  	<url-pattern>*.do</url-pattern>
		  </filter-mapping>

11,Oracle数据库:
当你修改了自己的计算机名称后,就会出现无法登陆Oracle主页等其它状况;
找到你数据库的安装目录:D:\..\oracle\product\10.2.0\server\NETWORK\ADMIN下边有两个文件
listener.ora和tnsnames.ora,打开它们并把其中的主机名(HOST)改为现在的主机名就OK

当两个表的列相同时(个数,名称,约束):
union连接两个select语句可以将两个表的数据加在一起(去掉重复),union all显示所有
eg: select id,name from student1 union (all) select id,name from student2 ;

12,日期和字符串之间相互转换:

Date d = new SimpleDateFormat("yyyy-mm-dd").parse("1234-25-30");
	System.out.println(d);
	String str = new SimpleDateFormat("yyyy-mm-dd").format(d);
	System.out.print(str);
分享到:
评论

相关推荐

    SSH整合AJAX验证用户名存在和验证码的完整实例

    SSH整合AJAX验证用户名存在和验证码的完整实例SSH整合AJAX验证用户名存在和验证码的完整实例SSH整合AJAX验证用户名存在和验证码的完整实例SSH整合AJAX验证用户名存在和验证码的完整实例SSH整合AJAX验证用户名存在和...

    mavenSSH+Ajax2

    Maven SSH 提供了一种基于Maven构建工具的SSH(Spring Security)集成解决方案,而Ajax 2则代表了Asynchronous JavaScript and XML(异步JavaScript和XML)的第二代技术,用于增强Web应用的用户体验。 **Maven SSH...

    SSH整合Ajax实现注册验证

    综上所述,SSH整合Ajax实现注册验证是一个涉及多方面技能和知识的项目,涵盖了后端开发、前端交互、数据库操作以及网络安全等多个领域。通过学习和实践这个案例,开发者可以提升自己的全栈开发能力。

    SSH-Ajax.zip_SSH+ajax_SSH使用Ajax_ajax ssh_ssh ajax_ssh怎么用ajax

    在IT行业中,SSH和Ajax是两种非常重要的技术,它们分别应用于服务器端和客户端,共同构建高效、动态的Web应用程序。SSH通常指的是Spring、Struts和Hibernate这三个Java开发框架的组合,而Ajax则是一种异步JavaScript...

    ssh实现ajax分页

    综上所述,实现"SSH+JSON+JQuery+Mysql"的Ajax分页,需要整合这些技术,完成前后端的交互。前端利用jQuery的AJAX发送请求,后端通过SSH框架处理请求,从MySQL数据库中获取分页数据,再以JSON格式返回。整个过程无需...

    整合ssh+ajax案例.doc

    总结来说,SSH+Ajax的整合能够实现后台业务逻辑的高效处理和前端界面的动态交互,为开发高质量的Web应用提供了强大支持。在实际开发中,开发者应熟练掌握SSH框架的配置和使用,以及Ajax与DWR的结合,以便更好地实现...

    ssh整合系统分页ajax

    5. 示例中的"qimo_JavaWeb"可能是一个包含示例代码的文件或项目,它可能包含了SSH整合的配置文件、Java源代码、JSP视图文件以及相关的分页、校验和Ajax实现。对于初学者来说,研究这个示例可以帮助理解如何在实际...

    SSH整合和ajax的包

    综上所述,SSH整合和Ajax的应用是现代Web开发中的重要技术,它们共同提升了应用的效率和用户体验。在实际开发中,理解这些知识点并熟练掌握其配置和使用,是成为一名合格的IT专业人员的必备技能。

    SSH+AJAX 简单登陆注册模块

    整合Struts、Spring、Hibernate做的登录注册,并用Ajax进行用户名是否被占用的检验,实现异步交互。初学完J2EE框架的整合Demo。导入MyEclipse,加入SSH所需的jar包修即可

    SSH和ajax的分页代码

    SSH(Struts2 + Spring + Hibernate)是一个经典的Java Web开发框架,它整合了Struts的MVC模式、Spring的依赖注入以及Hibernate的对象关系映射,为开发者提供了强大的后端支持。在大型项目中,为了提高页面加载速度...

    ssh+ajax实例

    以上这些知识点涵盖了SSH框架的整合使用和Ajax技术的实际应用,对于理解企业级Web应用开发具有重要的实践意义。通过这个实例,开发者可以深入学习到如何将这些技术融合在一起,构建出高效、响应式的Web应用。

    SSH+ajax+jquery面试实例

    在"SSH+ajax+jquery考试"这个实例中,我们可以期待看到如何将这些技术整合到一个项目中。可能包括以下几个方面: 1. **项目结构**:理解SSH框架如何组织项目目录,以及如何配置相关文件,如struts.xml、spring-...

    SSH整合AJAX验证用户名存在的完整实例

    SSH整合AJAX验证用户名存在的完整实例是一个典型的Web开发应用场景,主要涉及了Struts2(S)、Spring(S)和Hibernate(H)三大框架的集成,以及异步JavaScript和XML(AJAX)技术的运用,用于提升用户体验。...

    myEclipse整合SSH+Ajax

    标题:"myEclipse整合SSH+Ajax" 描述:"myEclipse整合SSH+Ajax环境的搭建步骤!" 知识点: 1. **myEclipse环境搭建**:myEclipse是一款强大的集成开发环境,特别适合Java EE项目的开发。它能够很好地支持Spring、...

    SSH登陆系统Ajax

    SSH登陆系统Ajax是一个结合了Struts、Spring和Hibernate三大Java Web开发框架的...通过学习和实践这个项目,开发者可以深入了解SSH框架的整合使用以及Ajax技术在实际项目中的应用,对于提升Java Web开发技能大有裨益。

    SSH整合示例,另附验证码、ajax,数据库请自配

    这个示例提供了一种实现SSH整合的方法,并且包括了验证码和AJAX技术的使用,但需要用户自己配置数据库。下面我们将深入探讨SSH框架、验证码、AJAX以及它们在实际开发中的应用。 **Spring框架** Spring是Java企业级...

    ssh+ajax

    在SSH组合中,Spring主要负责业务逻辑的管理和服务的提供,包括事务管理、数据访问集成以及与Struts的整合。Spring MVC是Spring的一部分,可以替代Struts作为控制层框架,提供更灵活的架构。 **Hibernate**: ...

    ssh+ajax的二级下拉菜单

    在IT行业中,SSH(Struts2 + Spring + Hibernate)是一个常见的企业级开发框架组合,用于构建基于Java的Web应用程序。这个项目"ssh+ajax的二级下拉...这个案例对于学习和理解这些技术的整合应用具有很高的参考价值。

    ssh +ajax(dwr)整合讲解

    在现代Web开发中,SSH(Struts、Spring、Hibernate)和AJAX(Asynchronous JavaScript and XML)技术的整合是常见的实践,以构建高性能、高交互性的企业级应用。DWR(Direct Web Remoting)是一种流行的JavaScript库...

    从别人那里下来的,ssh+ajax的简单实例

    【标题】"从别人那里下来的,ssh+ajax的简单实例" 涉及的主要知识点是SSH框架(Struts2 + Spring + Hibernate)与Ajax技术的整合应用。SSH是一套广泛用于构建Java Web应用程序的开源框架组合,而Ajax则是用于创建...

Global site tag (gtag.js) - Google Analytics