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

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 java
killall -9 java

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

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值