JAVAEE开发过程中遇到的一些问题

来源:互联网 发布:存储网络架构培训 编辑:程序博客网 时间:2024/05/22 13:02

1、加入如下jsp文件头之后,会遇到一些错误。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><c:set var="ctx" value="${pageContext.request.contextPath}" scope="page"/>

需要加入

jstl.jar

standard.jar

jsp-api.jar(位于tomcat/lib下)

jsp-2.1-6.1.12.rc4.jar(这个版本才有SetTag类,对应c:set)


2、eclipse 控制台输出乱码

进入eclipse-preferences-general-workspace-text file encoding

根据需要变成UTF-8格式或GBK格式


3、错误:createCriteria is not valid without active transaction

解决办法:

在sessionFactory bean中加入:hibernate.current_session_context_class=thread

<bean id="sessionFactory"  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>        <property name="hibernateProperties">            <value>                hibernate.dialect=${hibernate.dialect}                hibernate.query.substitutions=true 'Y', false 'N'                hibernate.cache.use_second_level_cache=true                hibernate.show_sql=${hibernate.show_sql}                hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider                hibernate.current_session_context_class=thread            </value>            <!-- Turn batching off for better error messages under PostgreSQL -->            <!-- hibernate.jdbc.batch_size=0 -->        </property>    </bean>

Session session = sessionFactory.getCurrentSession();Transaction tx = session.beginTransaction();//这里在事务里面进行操作...tx.commit();//session.close();  //也可以这样做:Session session = sessionFactory.openSession();//这里在事务里面进行操作....//session.close();

采用上一种getCurrentSession()方法需要将以下bean注释掉。

推荐用openSession(),这样你可以不必注释transactionManager。

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"/> </bean>

4、action调用不了service层,service层调用不了dao层。

(1)、action调用不了service层方法,看看applicationContext-struts.xml中property有没有设置正确,且UserManagerImpl.java实现类中有没有声明@Service("userManager")

<bean id="userAction" class="net.juntech.action.UserAction" scope="prototype">        <property name="userManager" ref="userManager" />     </bean>

(2)、service层调用不了dao层方法,在UserManagerImpl.java实现类中添加一个构造方法,其中@Autowired不能少,因为我没并没有再UserManager.java接口类声明这个方法。

@Autowired    public UserManagerImpl(UserDao userDao){        super(userDao);        this.userDao=userDao;    }


5、tomcat无法启动,提示端口被占用

Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s)


再次启动tomcat遇到这个错误,很奇怪,明明之前已经启动过一次并且关闭了。

我的系统是OS X 10.9,结合之前每次运行tomcat会有一个java图标在Dock栏中,我觉得应该是tomcat可能没有正确退出。去查看进程,果然有一个叫java的进程在运行。

终端使用killall java或活动管理器(Linux、OS X等系统)、windows控制台应该有个taskill命令或任务管理器可以解决这个问题。

上面的命令也许杀不掉进程,因为它的父进程是eclipse,可以选择先关闭eclipse再杀掉这个进程。也可以用killall -9 java强制结束进程。

killall javakillall -9 java

当然,如果还解决不了问题,去尝试寻找并结束使用这3个端口的程序。

实在不行,就去更改tomcat目录下cfg/server,xml中8005,8080,8009端口,改成其他未被使用的端口,访问端口也将有所变化。



0 0
原创粉丝点击