关于EL表达式中requestScope和param区别

今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久。

首先在看遇到的问题:

在浏览器地址输入,表示传入一个参数test,值为123

http://localhost:8888/Test/index.jsp?test=123


在index.jsp中尝试使用EL表达式取出,代码如下:

 <body>
${test}
</body>

发现毫无结果,再使用requestScope尝试取出:

  <body>
${requestScope.test}
</body>

发现还是毫无结果,感到非常诧异,遂干脆使用java脚本尝试取出。

  <body>
<%request.getAttribute("test"); %>
</body>


依然无解。

之后发现,若使用已下代码向request作用域赋值,则用上面代码可以取出

<%
request.setAttribute(
"test", "123");
%>

 


查询资料后发现,使用以下代码可以取出之前的请求参数:
EL:

  <body>
${param.test}
</body>

JAVA脚本:

  <body>
<%=request.getParameter("test") %>
</body>

结论就是:${param.name} 等价于 request.getParamter("name"),这两种方法一般用于服务器从页面或者客户端获取的内容。

     ${requestScope.name} 等价于 request.getAttribute("name"),一般是从服务器传递结果到页面,在页面中取出服务器保存的值。

 

参考资料:

el表达式中的${param}

http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html

posted @ 2012-11-12 15:30 youngturk 阅读(258) | 评论 (0)编辑 收藏

js读取XML文件 JS读写XML文件

JavaScript

<script type="text/javascript">
    //<![CDATA[
    //嵌入CDATA段可以防止不兼容Javacript的浏览器不产生错误信息
    //增加正则表达式 
    String.prototype.getQueryString = function(name) {
        var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)"), r;
        if (r = this.match(reg)) return unescape(r[2]);
        return null;
    };
    var address = location.search.getQueryString("address"); //通过表达式获得传递参数
    //针对两种浏览器,分别获取xmlDocument对象// 读取XML文件   
    function loadXML(xmlFile) {
        var xmlDoc;
        if (window.ActiveXObject) {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        }
        else if (document.implementation && document.implementation.createDocument) {
            xmlDoc = document.implementation.createDocument("", "", null);
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        } else {
            alert('您的浏览器不支持该系统脚本!');
        }
        return xmlDoc;
    }   
    //调用地图
    var map; //全局GMap GOOGLE 地图 API
    function load() {
        if (GBrowserIsCompatible()) //检查浏览器兼容性
        {
            map = new GMap2(document.getElementById("map")); //地图加栽到ID为map的DIV中。
            map.addControl(new GSmallMapControl());   //添加Gcontrol控件//放大缩小的那个
            map.setCenter(new GLatLng(26.577014, 104.877977), 15); //设置地图中心
            //创建多个坐标点(从INFO.XML文件中读取)
            var xmlDoc = loadXML("Info.xml"); 
            var members = xmlDoc.getElementsByTagName("number");
            var maxRes = members.length;
            for (var i = 0; i <= maxRes; i++) {                       //XML中记录了多个坐标点,要每个点都标记一下
                var oName = members[i].getElementsByTagName("name");
                var oLongitude = members[i].getElementsByTagName("Longitude");
                var oLatitude = members[i].getElementsByTagName("Latitude");

                var name = oName[0].firstChild.nodeValue
                var Longitude = oLongitude[0].firstChild.nodeValue
                var Latitude = oLatitude[0].firstChild.nodeValue        
                
                var marker = new GMarker(new GLatLng(Longitude, Latitude), { title: name });     //对每个点添加标记
                marker.openInfoWindowHtml("<div style=line-height:20px;text-align:center;font-size:12px;'><a href=Left.aspx?info=" + name + " target=framLeft>" + name + ",点击查看信息</a></div>"); 
                map.addOverlay(marker);
            }
        }
    }
    //]]>
</script>

XML文件

<?xml version="1.0" encoding="GB2312"?>   
<earth>   
<number id='1'>    
<name>213211212213213</name>   
<Longitude>26.577014</Longitude>   
<Latitude>104.877977</Latitude></number>   
<number id='2'>    
<name>112312332131212</name>   
<Longitude>26.586685</Longitude>   
<Latitude>104.863815</Latitude></number>   
<number id='3'>    
<name>123123121323112</name>   
<Longitude>26.572101</Longitude>   
<Latitude>104.866905</Latitude></number>   
<number id='4'>    
<name>123132123123321</name>   
<Longitude>26.572254</Longitude>   
<Latitude>104.891624</Latitude></number>   
</earth>

posted @ 2012-11-09 15:21 youngturk 阅读(2836) | 评论 (0)编辑 收藏

外网访问虚拟机MYSQL

第一步是要创建一个可以远程连接的 MySQL 用户
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'%'  IDENTIFIED BY 'userPWD'  WITH GRANT OPTION;
mysql> flush privileges;
### "%"表示任意IP,如果要为特定的user指定从特定的IP访问,方法如下:
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'ip'  IDENTIFIED BY 'userPWD'  WITH GRANT OPTION;
mysql> flush privileges;

第二步是要修改 mysql 的配置文件 /etc/mysql/my.cnf

在旧版本中找到 skip-networking,把它注释掉就可以了
#skip-networking

在新版本中:
# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure.
bind-address           = 127.0.0.1

bind-address           = 127.0.0.1 这一行要注释掉
#bind-address           = 127.0.0.1

或者把允许访问的ip 填上
bind-address       = 192.168.1.100

然后重启 MySQL 
/etc/init.d/mysql restart

以上方法只完成了外网访问的配置,它只允许从主机上访问MYSQL,如果要完全从外网访问则需要将主机的3306端口映射到虚拟机的3306上(当然其它的端口也是可以的)


虚拟机端口映射:
http://wenku.baidu.com/view/b01c2ccca1c7aa00b52acb62.html###

posted @ 2012-11-09 11:41 youngturk 阅读(688) | 评论 (0)编辑 收藏

框架搭建好后,没有详细的错误信息,主页无法访问.用tomcat去调试,没有详细log..

这两天在搭建struts2+spring+hibernate框架的过程中遇到如题的错误,在百度和谷歌上查了两天,以致快到了崩溃的边缘。最后还是解决了。这个问题的出现,原因有很多,在这总结如下,以供分享:



框架搭建好后,启动服务器出现如下的信息:

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).

log4j:WARN Please initialize the log4j system properly.

2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start

严重: Error listenerStart

2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start

严重: Context startup failed due to previous errors

2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install

信息: Installing web application at context path /tomcat-docs from URL file:D:/server/Tomcat 5.0/webapps/tomcat-docs

2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install

信息: Installing web application at context path /webdav from URL file:D:/server/Tomcat 5.0/webapps/webdav

。。。。



可能出错的地方:

1.web.xml文件 web应用部署描述符,里面的部署的xml文件或者类,如果这些找不到就会发生startup failed due to previous errors错误。

2.如果在应用spring的话,在配置文件applicationContext.xml中定义的类、xml文件找不到也会报这个错误。

3.在web.xml,struts.xml,applicationContext.xml文件中自身有任何一点错误都可能引起上面的这个问题,而不仅仅是附带的文件错误导致。

4.如果使用ibatis的话,在SqlMapConfig.xml中定义的xml文件找不到也会报这个错误。(hibernate的配置在整合spring的时候使用spring的配置文件)

5.JDK的版本问题,最好使用JDK5.0 或者更高的版本。

6.Eclipse和tomcat的版本兼容问题

7.框架整合的过程中在导入到lib下的jar包冲突也可能产生该错误。

8.jar包的缺少以及jar包的版本也可产生该错误。

9.其他的原因



解决该问题的途径:

由于上面问题可能已经是web服务器内部产生了错误,而且IDE中的Log信息较少,问题的解决很难入手。

而该问题的产生经常会导致页面跳转寻找不到文件的 Http 404 错误。。。。。

可以通过在tomcat中添加log文件来让log信息提示的更精确一些,即设置log输出的等级。

1.tomcat的安装路径下tomcat home下的common文件夹下的classes文件夹中创建log4j.properties文件,即

。。。Apache Software Foundation/Tomcat 5.5/common/classes

log4j.properties配置如下(配置是转载):

log4j.rootLogger=info,Console,R

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n



log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R.File=${catalina.home}/logs/tomcat.log

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n



log4j.logger.org.apache=info,R

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R

log4j.logger.org.apache.catalina.core=info,R

log4j.logger.org.apache.catalina.session=info,R



2.将log4j-1.2.15.jar和commons-logging.jar包拷贝到。。。Apache Software Foundation/Tomcat 5.5/common/lib下即可。



做好上面两步,启动服务器的时候,会在tomcat的安装路径下的。。Apache Software Foundation/Tomcat 5.5/logs下自动的

生成tomcat.log文件以记录日志信息。

注:tomcat.log文件中的日志信息会记载很多,如果过大就可能产生磁盘空间不足的问题,建议定时的清除日志信息。


通过上面的日志文件信息可以定位到比较具体的问题根源,在仔细的查看问题一一攻破即可解决。


我在搭建框架之后,在web.xml文件中配置的欢迎页面显示的时候报404的错误,通过上面的途径找到了两个错误,虽然花了两天的时间,最终还是解决了。

posted @ 2012-11-08 16:19 youngturk 阅读(656) | 评论 (0)编辑 收藏

hibernate3.0版本的hibernate.dialect 的包路径是org.hibernate.dialect.Oracle9Dialect

在hibernate2.0中hibernate.dialect的包路径是net.sf.hibernate.dialect.OracleDialect,

posted @ 2012-11-08 16:17 youngturk 阅读(926) | 评论 (0)编辑 收藏

oracle创建自增长序列

CREATE TABLE orders (
  id number(11) NOT NULL ,
  username varchar(22) NOT NULL ,
  kind varchar(22) NOT NULL ,
  phone varchar(11) DEFAULT '',
  email varchar(22) DEFAULT '',
  qq varchar(12) DEFAULT '',
  name varchar(30) DEFAULT '',
  address clob,
  state varchar(30)  DEFAULT '未处理',
  time date DEFAULT '',
  comname varchar(50) DEFAULT '',
  comadd varchar(50) DEFAULT '',
  PRIMARY KEY (id)
)

create sequence member_SEQ
minvalue 1
maxvalue 9999999
start with 21
increment by 1
cache 20;

CREATE OR REPLACE TRIGGER "member_trig"
  BEFORE INSERT ON admin
  REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
  SELECT member_seq.NEXTVAL INTO :NEW.ID FROM DUAL;
END member_trig;

 

posted @ 2012-11-08 11:17 youngturk 阅读(255) | 评论 (0)编辑 收藏

Tomcat5.0连接池配置(oracle / mysql / sqlserver2000)

配置一:XML方法

1、下载proxool 地址:http://proxool.sourceforge.net
    2、解压缩proxool-0.9.0RC2.zip,拷贝lib/proxool-0.9.0RC2.jar到web-info/lib
       拷贝jdbc驱动到web-info/lib
    3、在web-info下建立文件:proxool.xml
     文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  <proxool>
    <alias>Develop</alias>
    <driver-url>jdbc:oracle:thin:@192.168.100.18:1521:RNMS</driver-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver-properties>
      <property name="user" value="scmlp"/>
      <property name="password"  value="scmlpscmlp"/>
    </driver-properties>
    <maximum-connection-count>500</maximum-connection-count>
    <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
  </proxool>
</something-else-entirely>

    4、在web.xml文件内加入以下内容:

<servlet>
     <servlet-name>proxoolServletConfigurator</servlet-name>
 <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
     <init-param>
       <param-name>xmlFile</param-name>
       <param-value>WEB-INF/proxool.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
   </servlet>
<!-- proxool提供的管理监控工具,可查看当前数据库连接情况。如果运行不成功,请删除本行 -->
   <servlet>
    <servlet-name>Admin</servlet-name>
      <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
   </servlet>
   <servlet-mapping>
    <servlet-name>Admin</servlet-name>
    <url-pattern>/admin</url-pattern>
   </servlet-mapping>

     5、在调用数据库连接代码:
       Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
       Connection conn = DriverManager.getConnection("proxool.Develop");

     6、利用proxool监控工具查看数据库运行状态。地址:./admin

配置二:properties方法

1,下载proxool-0.8.3.jar并放到相应的目录,这个应该比较简单了   
  2,写一个配置文件放到web-inf目录下,配置文件内容如下:   
        jdbc-0.proxool.alias=bidding   
        jdbc-0.proxool.driver-url=jjdbc:oracle:thin:@127.0.0.1:1521:dbname   
        jdbc-0.proxool.driver-class=oracle.jdbc.driver.oracledriver   
        jdbc-0.user=name   
        jdbc-0.password=pass   
        jdbc-0.proxool.maximum-connection-count=200   
        jdbc-0.proxool.house-keeping-test-sql=select   *   
  3,在web-inf/web.xml中添加如下代码:   
        <servlet>   
            <servlet-name>servletconfigurator</servlet-name>   
            <servlet-lass>org.logicalcobwebs.proxool.configuration.servletconfigurator</servlet-class>   
            <init-param>   
            <param-name>propertyfile</param-name>   
            <param-value>web-inf/proxool.properties</param-value>   
            </init-param>   
            <load-on-startup>1</load-on-startup>   
          </servlet>     
  4,配置就这么简单,下面给你一段怎么得到一个连接代码,其他的应该就比较简单了   
            public   connection   getconnection()   {   
            try   {     
            conn   =   drivermanager.getconnection("proxool.bidding");   
            }catch(sqlexception   ex){   
            ex.printstacktrace();             
            }   finally   {   
            try   {             
            if   (conn   !=   null)   {   
            conn.close();   
            }   
            }   catch   (sqlexception   e)   {   
            e.printstacktrace();   
            log("problem   closing   connection");   
            }   
            }     
            return   conn;   
            }         

posted @ 2012-11-07 09:37 youngturk 阅读(368) | 评论 (0)编辑 收藏

struts2-java.lang.NullPointerException at com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading(FileManager.java

最近在学习Struts2的时候,总是无法启动Tomcat服务器,报错如下,用6.0、7.0都不行,起初以为是环境的问题,弄了一下午还是不行。我用的Strtus jar是2.16但是前几天做项目还是好好,可切换个工作空间却就老是报如下的错误,甚是烦人。在网上转了好久,用试用了他的很多方法都不能解决问题。

1.strtus.xml

    在struts.xml中配置了<constant name="struts.devMode" value="true"/> (据说配置了<constant name="struts.configuration.xml.reload" value="true"/>也会报错,这个我没试过)
时启动tomcat报错。
org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.NullPointerException
    at com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading(FileManager.java:209)
    at com.opensymphony.xwork2.util.FileManager.fileNeedsReloading(FileManager.java:60)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:325)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:168)
    at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:220)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:61)
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:774)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:191)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-2-4 22:40:54 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2009-2-4 22:40:54 org.apache.catalina.core.StandardContext start
严重: Context [/Struts2Demo2] startup failed due to previous errors

网上解决办法:devMode模式是开发模式,开启它则默认开启了i18n.reload、 configuration.xml.reload。这个错误是由于configuration.xml.reload设置为true倒置的,但是网上的资料没有说明原因及解决办法,倒是一个国外的apache相关BBS上有人说这是216版本的BUG,并且附上了一个.patch修正文件,说217版本会修正。。。可我不会用也不知道是不是这个原因,这个问题就一直搁置在这里了。过了几个月,也就是最近网上查了下发现在apache的一个邮件列表中有关于这个的解释,原因很简单,tomcat的安装路径包含空格我的成功的办法:据说这是struts2.1.6的bug,换新版本2.1.8就ok,当然还要相应的xwork版本,好像是xwork2.1.6,我将原来的2个旧jar包换成新的就ok了。。。。无语啊。。。一试果然如此。

注意:2个jar包换了之后重启tomcat可能会报错, Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar,这个错误是开始那个引起的,把tomcat中相应项目删除了,重新部署就没问题了

   下面是4个开发模式常用配置的简介---(来自http://hi.baidu.com/12261016/blog/item/1d7f6ccaded7248ec91768ec.html)
    <!-- 开启使用开发模式,详细错误提示 -->
    <!-- <constant name="struts.devMode" value="true"/>-->
    <!-- 指定每次请求到达,重新加载资源文件 -->
    <!-- <constant name="struts.i18n.reload" value="true"/>-->
    <!-- 指定每次配置文件更改后,自动重新加载 -->
    <!-- <constant name="struts.configuration.xml.reload" value="true"/>-->
    <!-- 指定XSLT Result使用样式表缓存 -->
    <!-- <constant name="struts.xslt.nocache" value="true"/>-->

posted @ 2012-11-06 13:30 youngturk 阅读(2128) | 评论 (0)编辑 收藏

当引入的新项目出现红色叹号的时候,问题所在是可能引入的包有问题

解决办法移掉项目属性中classpath里面报错的包,可能包不存在,在本地中
重新编译项目.

posted @ 2012-10-31 15:02 youngturk 阅读(262) | 评论 (0)编辑 收藏

jar,自定义打包作用

可以将自己写的java文件打包成a.jar形式,由export导出,引入时候之间引入到lib目录下即可.与原来形式一样..

posted @ 2012-10-30 14:15 youngturk 阅读(180) | 评论 (0)编辑 收藏

仅列出标题
共33页: First 上一页 6 7 8 9 10 11 12 13 14 下一页 Last 
<2024年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

公告

this year :
1 jQuery
2 freemarker
3 框架结构
4 口语英语

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

EJB学习

Flex学习

learn English

oracle

spring MVC web service

SQL

Struts

生活保健

解析文件

搜索

最新评论

阅读排行榜

评论排行榜