SSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不用叹号,springMVC和springAnnotation要修改spring配置文件

SSH已经学完一周多了,一直忙着研究服务端,今天抽空总结下,用配置文件写的,一般情况spring应该使用annotation

加入支持的顺序是先Spring-》Hibernate-》struts。Spring中加入的支持包与Spring + JDBC开发时完全相同。



摘自liky框架结构,这样的结构一般小型项目足够了

加入hibernate




生成映射后,在web.xml中还需要加入监听配置。

>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring/applicationContext-*.xml</param-value>
</context-param>


<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>



application-hibernate.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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">




<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl">
</property>
<property name="username" value="zl"></property>
<property name="password" value="123"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">
true
</prop>
<!-- 项目上线时要删掉,不让别人看见sql语句 -->
<prop key="hibernate.format_sql">
true
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>hibernate/Province.hbm.xml</value>
<value>hibernate/City.hbm.xml</value></list>
</property></bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>

daoImpl,别忘了配置

package com.kane.dao.Impl;


import java.util.List;




import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


import com.kane.dao.IProvince;
import com.kane.pojo.Province;


public class ProvinceImpl extends HibernateDaoSupport implements IProvince{

public void docreate(Province v) throws Exception {
super.getHibernateTemplate().save(v);

}


public void doremove(Integer id) throws Exception {
super.getHibernateTemplate().delete(findById(id));

}


public List<Province> findAll() throws Exception {
return  super.getHibernateTemplate().loadAll(Province.class);

}


public Province findById(Integer id) throws Exception {
return super.getHibernateTemplate().get(Province.class, id);
}


public List<Province> findByPage(int pageNo, int pageSize, String column,
String keyword) throws Exception {
// Spring没有封装HQL版本的分页查询方法.
// 1、使用Criteria来完成分页查询
DetachedCriteria criteria=DetachedCriteria.forClass(Province.class);

//加入模糊查询条件
criteria.add(Restrictions.like(column, "%"+keyword+"%"));
List<Province> all=super.getHibernateTemplate().findByCriteria(criteria,
(pageNo-1)*pageSize,pageSize);
// 2、使用Spring的扩展接口,通过匿名内部类的形式来扩展Spring原有的方法
// List all = super.getHibernateTemplate().executeFind(
// new HibernateCallback() {
// public Object doInHibernate(Session session)
// throws HibernateException, SQLException {
// // 这里就是封装好的Hibernate中的操作。
// // 内部类要使用外部类的属性,必须为属性加入final关键字
// String hql = "FROM News AS n WHERE n." + column + " LIKE ?";
// Query query = session.createQuery(hql);
// query.setString(0, "%"+keyword+"%");
// query.setFirstResult((pageNo - 1) * pageSize);
// query.setMaxResults(pageSize);
//
// return query.list();
// }
// });


return all;


}


public int getCount(String column, String keyword) throws Exception {
String hql="SELECT COUNT(P) FROM Province AS P WHERE P."+column+" LIKE ?";
List allList=super.getHibernateTemplate().find(hql, "%"+keyword+"%");
return ((Long) allList.get(0)).intValue();//默认返回long型,这里用到
}


public void update(Province v) throws Exception {
super.getHibernateTemplate().update(v);

}


}

serviceImpl

package com.kane.service.Impl;


import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.kane.dao.IProvince;
import com.kane.pojo.Province;
import com.kane.service.IProvinceService;
/**
 * 由AOP解决预处理和断开连接的工作
 * @author lenovo
 *
 */
public class ProvinceServiceImpl implements IProvinceService{
private IProvince provinceImpl;


public IProvince getProvinceImpl() {
return provinceImpl;
}


public void setProvinceImpl(IProvince provinceImpl) {
this.provinceImpl = provinceImpl;
}


public Map<String, Object> list(int pageNo, int pageSize, String keyword,
String column) throws Exception {
Map<String,Object> map=new HashMap<String, Object>();
map.put("allProvince", provinceImpl.findByPage(pageNo, pageSize, column, keyword));
map.put("allCount", provinceImpl.getCount(column, keyword));
return map;
}
public List<Province> findAll() throws Exception {

return provinceImpl.findAll();
}

}


struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>


<include file="struts/struts-root.xml"></include>
<include file="struts/struts-front.xml"></include>
<include file="struts/struts-back.xml"></include>

<package name="my_project_default" extends="struts-default" abstract="true">
<global-results>
<result name="forward">/forward.jsp</result>
<result name="input">/error.jsp</result>
</global-results>
</package>


</struts>

这里用strut-root配置读取action

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="root" namespace="/" extends="my_project_default">
<action name="province_*" class="provinceAction" method="{1}"><!-- _可以换成其他 -->
<result name="index">/index.jsp
</result>
</action>
</package>


</struts>

注意出现懒汉加载

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.kane.pojo.City" table="CITY" schema="ZL">
        <id name="cid" type="java.lang.Integer">
            <column name="CID" precision="8" scale="0" />
            <generator class="increment" />
        </id>
        <many-to-one name="province" lazy="false" class="com.kane.pojo.Province" fetch="select">
            <column name="PID" precision="8" scale="0" />
        </many-to-one>
        <property name="cname" type="java.lang.String">
            <column name="CNAME" length="30" />
        </property>
    </class>
</hibernate-mapping>

这里做个测试,具体页面显示值将采用Ajax提交json数据,CSDN不允许传太多图片,内容在另一篇博客

action代码

package com.kane.action;


import java.util.List;


import com.kane.pojo.Province;
import com.kane.service.IProvinceService;
import com.opensymphony.xwork2.ActionSupport;


public class ProvinceAction extends ActionSupport{
private IProvinceService provinceServiceImpl;
public IProvinceService getProvinceServiceImpl() {
return provinceServiceImpl;
}
public void setProvinceServiceImpl(IProvinceService provinceServiceImpl) {
this.provinceServiceImpl = provinceServiceImpl;
}
public String indexPre() throws Exception {
List<Province> list=provinceServiceImpl.findAll();
System.out.println(list.get(0).getCities());
return "index";
}

}


查看界面:http://blog.csdn.net/needkane/article/details/21445789

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值