s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题

1.新建一个web project

2.首先生成Hibernate Facet

3.Hibernate Facet 安装步骤

 

4.然后是spring facet安装步骤

 

5.最后是struts facet 的配置

 6.最后的整体布局如下所示

7.在服务器上运行,发现如下错误:

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    ........

主要是没有在applicationContext.xml中配置 DataSource 这个bean,配置好后将其注入sessionFactory

<!--新加入 datasource -->
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/hjzgg_test?characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="hjzgg5211314" />
      </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
        <!--新加入 将dataSource注入到sessionFactory中 -->
        <property name="dataSource" ref="dataSource"></property>

        <property name="hibernateProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
                hibernate.hbm2ddl.auto=update
                hibernate.show_sql=true
                hibernate.format_sql=false
                hibernate.cache.use_second_level_cache=true
                hibernate.cache.use_query_cache=false
                hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
                hibernate.current_session_context_class=thread <!-- 解决Hibernate4 No Session found for current thread -->
</value> </property>

8.新建PersonDao(DAO层),它的实现类PersonDaoImpl,以及 Action类 LoginAction

在applicationContext.xml中添加如下代码:

    <bean id="personDao" class="com.xunchang.PersonDaoImpl">
            <!-- 采用依赖注入传入SessionFactory的引用 -->
            <property name="sessionFactory" ref="sessionFactory"/>
      </bean>
      <bean id="login" class="com.xunchang.LoginAction">
            <property name="personDao" ref="personDao"/>
      </bean>

9.POJO 与 hibernate层:新建POJO(普通java类, 对于每一个变量拥有getter 和 setter方法),新建 映射hibernate持久化类person.cfg.xml文件如下:

<?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">
<hibernate-mapping package="com.xunchang">
        <class name="Person" table="home402">
            <!-- 定义持久化类的表示属性 -->
            <id name="personId" column="personId" type="java.lang.Integer">
                <!-- 定义主键生成策略 -->
                <generator class="identity"/>
            </id>
            <property name="person_name" column="person_name" type="java.lang.String"/>
            <property name="person_age" column="person_age" type="java.lang.Integer"/>
        </class>
</hibernate-mapping>

然后在applicationContext.xml中的sessionFactory(bean)中加载该映射文件如下:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
        <!--新加入 将dataSource注入到sessionFactory中 -->
        .......
        ......
         <!--通过配置文件的方式获取数据源-->
        <property name="mappingResources">
            <list>
               <!-- 以下用来列出所有的PO映射文件 -->
               <value>person.cfg.xml</value>
            </list>
        </property>
    </bean>

10.运行服务器,问题又来了,如下:

org.hibernate.HibernateException: <span style="color: #ff0000;">No Session found for current thread</span>
    org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
    org.hibernate.internal.SessionFactoryImpl<span style="color: #ff0000;">.getCurrentSession(SessionFactoryImpl.java:1041)</span>
    com.xunchang.PersonDaoImpl.getSession(PersonDaoImpl.java:16)
    com.xunchang.PersonDaoImpl.findAllPerson(PersonDaoImpl.java:63)
    com.xunchang.LoginAction.execute(LoginAction.java:20)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Hibernate4 No Session found for current thread原因:  http://www.yihaomen.com/article/java/466.htm

解决方法:在applicationContext.xml中的sessionFactory 中<property name="hibernateProperties"></property>加入 hibernate.current_session_context_class=thread

<property name="hibernateProperties">
            <value>
                ......
                hibernate.current_session_context_class=thread <!-- 解决Hibernate4 No Session found for current thread -->
 </value> </property>

11.最后一个问题就是hibernate 中文乱码,解决方案如下:

//写一个字符集过滤器
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
public   class   SetCharacterEncodingFilter   extends   HttpServlet   implements   Filter  {
   public   void   doFilter(ServletRequest   request,   ServletResponse   response,   FilterChain   chain)  throws   ServletException,   IOException   {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        chain.doFilter(request,   response);
   } 

   public   void   init(FilterConfig   config)   throws   ServletException{
   } 

   public   void   destroy(){
   }
}

//在web.xml中加入如下代码,问题解决
<filter>
    	  <filter-name>encodingFilter</filter-name>
	      <filter-class>com.xunchang.SetCharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
         <filter-name>encodingFilter</filter-name>
         <url-pattern>/*</url-pattern>
  </filter-mapping>
时间: 2024-12-22 09:13:54

s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题的相关文章

s2sh框架搭建(基于spring aop)

对于spring aop 是如何管理事务的,请看一下:http://bbs.csdn.net/topics/290021423 1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3

.Net框架搭建之辅助模版代码生成工具

在.Net框架搭建讲解中,提到了代码自动生成来减少开发人员人工作量,比如数据库对应的Model.最基层的Repository类和接口等等,除了类名不一样,其他都一样,没必要再手写一遍. 我在这里,介绍使用CodeSmith模版生成Model类,其他的都一样,拿到表名和各字段名.字段类型等等,想怎么生成就能怎么生成. 首先,在硬盘中,建立一个文件夹,用来放模版文件,比如: F:\pukuimin\InjectExample\ExampleCodeSmithTemplate 点击添加文件夹位置,把这

start-Struts2框架搭建 myeclipse

问题描述 Struts2框架搭建 myeclipse 严重: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:213) at

远程桌面登陆老弹出辅助工具管理器怎么解决?

  输入一个密码也弹出辅助工具管理器,很烦,都没办法登陆了,玩游戏的时候按快捷键也弹出,想问一下如何解决? 这是是系统按键冲突了,也就是WIN+U 解决方法: 打开系统文件夹: C:WINDOWSsystem32 C:WINDOWSsystem32dllcache 找到utilman.exe,将这个文件的文件名改为其它就可以了

struts-新手求助!在MyEclipse导入Struts框架搭建的项目出现404错误!

问题描述 新手求助!在MyEclipse导入Struts框架搭建的项目出现404错误! HTTP Status 404 - /16/WebRoot/admin_index.jsp type Status report message /16/WebRoot/admin_index.jsp description The requested resource is not available. Apache Tomcat/7.0.63 struts.xml的配置文件如下: <?xml versio

Microsoft Azure的那7种辅助工具(2)

接 Microsoft Azure的那7种辅助工具(1) 现在大家只要一听到或者一想到云计算,就会马上联想到了网格计算.不过云计算和网格计算并不是同一回事.只是对于网格计算的场景来说,云计算对他的帮助时十分理想的,云计算不仅可以访问无限的硬件和其他的资源的能力,还可以让你的网格按需进行扩展.所谓网格计算,其实就是一个庞大的任务(通常是数学性质的任务)神奇地被分成很多"小块",之后将这些"小块"放到一个巨大的CPU矩阵中进行计算,当得出一个答案的时候,再返回给用户,这

onvif开发实战2--总结框架搭建

完成框架搭建后,编写自己的主函数起onvif服务 编写makefile objs = onvif.o onvif_func.o duration.o soapC.o soapServer.o stdsoap2.o onvif:$(objs)    gcc -o onvif $(objs) .PHONY:cleanclean:    #-rm onvif    rm *[!C.o].o   发现提示好多函数没有定义,在头文件soapStub.h中定义的,直接把没有定义的函数声明拷贝到一个onvif

php-使用PHP搭建自己的MVC框架 搭建时出现的问题

问题描述 使用PHP搭建自己的MVC框架 搭建时出现的问题 你好,我按照<使用PHP搭建自己的MVC框架>上面的步骤来进行搭建这个框架,但是把所有的步骤都做完了,最后访问的时候提示找孙到页面,请问这个问题应该怎么解决呢,还是框架本身就有问题呢,求指教,谢谢! 解决方案 看看作者有没有提供完整的源代码,如果没有,这种例子根本不靠谱.看教程一定要找有完整代码的. 解决方案二: 重新核对看看有没有遗漏什么关键步骤.或者重新找个完整的示例代码. 解决方案三: 没有源码的,但是我看到有很多人在转,所以我

S2SH框架配置步骤

现在开发的一个项目使用S2SH框架,配置环境用了一两天,现在把当时配置 环境时写的文档整理下发出来,也算加强点记忆. 1 开发环境 Ø MyEclipse5.5 Ø JDK 1.6 Ø Java EE 5.0 Ø Tomcat6.0 Ø Struts2.1.6 Ø Spring2.5.6 Ø Hibernate3.3.1 2 为 ssh做好准备2.1下载包 Ø Struts2.1.6包下载 : http://struts.apache.org/download.cgi#struts216 Ful