做了一个网站,在单机上测试没有问题,挂到服务器上就出毛病了。
1,我的电脑上的tomcat版本是6.0的,服务器上的是5.x的,放到服务器上就不支持el表达式了。
2,服务器的Mysql编码是拉丁文,我做程序时的编码是utf-8,出现的问题是放到服务器上后部分地方出现乱码。对于1,查了一下,网上说有两种方案,一是改动所有加了el表达式的jsp页面,使其支持el表式式。但是工程有好几百个jsp页面,要改的话太累了。第二种,改动服务器tomcat中web.xml的配置,但是服务器上不只一个网站,改动会不会对其他的产生影响?对于2,有啥方法不?谢谢各位

解决方案 »

  1.   

    1. 这难弄了,向下兼容好说,这向上兼容,唉。
    不知道老版的OGNL可不可以解决。或者找el的jar包放上去,但是你都需要放jar包到服务器lib目录中,权限够不够,是否影响其他客户,有没有bug都是很难说的事情。2. 看你原先的架构好不好了。免不了要在DAO层面上做强制字符集转换的。架构不好工作量就大了。
      

  2.   

    1.你有权利更新服务器没?如果有就更新下呗。Tomcat又不是weblogic或者JBOSS,本来就小。不涉及项目成本问题。
    如果没有,那么把el从jsp中去掉,用老实方法做。2.拉丁文不是字符集吧,UTF-8是unicode字符集的变形,这个应该是乱码问题。你说放到服务器后部分出现乱码,
    你考虑乱码的出现的原因,这个不一定是数据库导致的哦。很可能是你的代码本身没有统一字符集导致的哦。
      

  3.   

    第一个问题我之前有遇到过,你看看你关于web.xml里面web-app的版本号,el表达式从2.4开始才支持,不知道你是不是这种情况。
      

  4.   

    5也是支持EL的吧,貌似要在jsp里加上一句话
    1.在使用EL表达式的JSP页面内添加如下代码:<%@ page isELIgnored=”false” %>
    2.修改项目Web.xml文件,例如:  
    <web-app version=”2.5”
     xmlns=”http://java.sun.com/xml/ns/javaee”
     xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
     xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>
     
    中的2.5部分修改为2.4即可
      

  5.   

    改动web.xml只会对你自己的项目产生影响
      

  6.   

    第一点,已经有人回答了。你测试下吧。改动项目的web.xml试下。第二点,确认数据库连接的字符集是否也是使用的utf-8。另外,是否可以自己建立utf-8的库。另,通过编码拦截器应该也可以解决。类似orcal是gbk编码,但页面是utf-8编码。
      

  7.   

    第一点,已经有人回答了。你测试下吧。改动项目的web.xml试下。第二点,确认数据库连接的字符集是否也是使用的utf-8。另外,是否可以自己建立utf-8的库。另,通过编码拦截器应该也可以解决。类似orcal是gbk编码,但页面是utf-8编码。
      

  8.   

    修改MySql里的my.ini文件把default-character-set设置的拉丁文改成default-character-set=gbk(有两处),重启mysql服务就ok了
      

  9.   

    第一个问题,昨天突然想到了,可以配置web.xml文件,这样就不需要在每个jsp文件中改动什么了,对别人也没有影响。<jsp-config>
    <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <scripting-invalid>false</scripting-invalid>
    <el-ignored>false</el-ignored>
    </jsp-property-group>
    </jsp-config>祝顺利