websphere的servlet配置无效问题

C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\app-bi2Node01Cell\applications\appname.ear\deployments\appname\appname.war\WEB-INF\web.xml 该目录下的web.xml的修改才是有效

应用程序发布的目录下的那个web.xml添加的servlet配置是无效的

posted @ 2008-04-28 18:06 JGAO编程随笔 阅读(1435) | 评论 (3)编辑 收藏

jsp的request.getParameter获取不到表单参数

可能原因:

1: form表单中的控件没有定义name属性

2: form表单中的控件被设置成disabled

3: form表单的enctype="multipart/form-data"是一种用于上传文件的表单

解决方法:

对于第三种情况我们直接request.getParameter来取参数值是取不到的

我们可以借用apache的上传组件来解决

用到jarcommons-fileupload-1.1.1.jar

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

    /**

     *获取各种类型表单的表单参数

     *@paramrequest HttpServletRequest请求对像

     * @paramparamName 参数名

     *@return

     *@throwsFileUploadException

     */

    publicstatic String getParameterValue(HttpServletRequest request,String paramName) throws FileUploadException{

    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if(isMultipart==true){

        FileItemFactory factory = new DiskFileItemFactory();

        ServletFileUpload upload = new ServletFileUpload(factory);

        List fileItemList = upload.parseRequest(request);

        if(fileItemList!=null){

           for(Iterator itr=fileItemList.iterator();itr.hasNext();){

               FileItem fileItem = (FileItem)itr.next();

               if(fileItem.getFieldName().equalsIgnoreCase(paramName)){

                   return new String(fileItem.getString().getBytes("ISO8859-1"))//中文转码

               }

           }

        }

    }else{

        return new String(request.getParameter(paramName).getBytes("ISO8859-1"))//中文转码

    }

    return"";

    }

posted @ 2007-12-14 19:07 JGAO编程随笔 阅读(14774) | 评论 (6)编辑 收藏

初学jsf自定义标签时遇到的问题总结

1.定义一个标签要用到两个java类,这个跟jsp的自定义标签有点不一样
  第一个类继承UIComponentTag, 用于定义标签的属性和设置标签的所有属性值到控件的map属性attributes或valueBinding中
  第二个类继承UIInput或者UIOutput,用于渲染标签的内容,真正打印标签内容的地方就在这里
   
2.这两个类是怎么联系的
 我们需要像定义jsf的bean的影射文件一样,在faces-config.xml或者自己定义的xml文件里面定义第二个类
 如:
 
<faces-config>
  
<!--分页标签-->
  
<component>
    
<component-type>pageTag</component-type>
    
<component-class>com.jsf.PageComponent</component-class>
  
</component>
  
  
</faces-config>
  然后第一个类要实现父类的一个方法 public String getComponentType();从这里返回一个字符串pageTag,这样就跟第二个类联系起来了

3.标签属性的定义
  标签属性的定义一般都是可转化为字符串的类型的,除非你还是用
<%=rowList%>这种jsp赋值的方式
  别以为你定义的一个List类型的属性可以用jsf的EL表达式可以直接赋值进来,EL表达式传进来以后属性接收的就是这一串EL表达式
  所以就是说你的属性就是要字符串类型的

4.那么jsf自定义标签是怎么接收EL表达式绑定的列表的
 先通过父类的isValueReference(属性值),来判断该属性的值是否是一个EL的表达式
 如果是则通过获取绑定值得方式把真正的属性的值设置到标签父类的valueBinding对像中
 否则直接把属性的值添加到标签父类的attributes对像中
  if (isValueReference(属性值)) {
    javax.faces.el.ValueBinding vb = Util.getValueBinding(value.toString());
    component.setValueBinding(name, vb); //component就是标签对像,name就是标签的属性名称
 } else {
    component.getAttributes().put(name, 属性值);
 }

 这就是个设置属性值的过程,可以在第1点说的第一个类里面的protected void setProperties(UIComponent component)方法
5.现在知道标签属性值的作用了吗
 是的标签属性值只不过是起个作用而已,而不是我们真正所要的值
 也就是说我们是不能从这些属性中直接取值的
 
6.那么我们怎么取属性的真正的值呢
 可以先从第4点说的标签父类的attributes对像中取值
 如果取不到值那就到标签父类的valueBinding对像中取值
 说白了就是,通过第4步我们属性的真正的值不是放在attributes就是在valueBinding中
 Object obj = component.getAttributes().get(name); //component就是标签对像,name就是标签的属性名称
 if (obj == null) {
   ValueBinding vb = component.getValueBinding(name);
   if (vb != null) {
    return vb.getValue(context);
   } else {
    return null;
   }
 }
 这个过程就是取属性值的过程,在第1点说的第二个类里面进行
 
7.现在属性值也可以取到了,那么我们要怎么打印标签的内容呢
  我们可以在第二个类的encodeBegin或者encodeEnd中进行
  public void encodeBegin(FacesContext context) throws IOException
  public void encodeEnd(FacesContext context) throws IOException
 
  取属性值的过程也可以在这里进行,取完值后就是把值组装到标签内容的相应位置中就完了
  
  基本上就是这几点

posted @ 2007-11-21 19:21 JGAO编程随笔 阅读(2135) | 评论 (4)编辑 收藏

ajax4jsf跟outputStream.write冲突?

我在项目中引入ajax4jsf框架
web.xml中加入

 <filter>
        
<display-name>Ajax4jsf Filter</display-name>
        
<filter-name>ajax4jsf</filter-name>
        
<filter-class>org.ajax4jsf.Filter</filter-class>
  
</filter>
  
<filter-mapping> 
      
<filter-name>ajax4jsf</filter-name>
      
<servlet-name>Faces Servlet</servlet-name>
      
<dispatcher>REQUEST</dispatcher>
      
<dispatcher>FORWARD</dispatcher>
      
<dispatcher>INCLUDE</dispatcher>
 
</filter-mapping>


结果以前的输出文件到客户端的代码就出问题了

                InputStream fileInputStream = mgt.downloadToStream(result_pathEl.getTextTrim());
                mgt.deleteFile(result_pathEl.getTextTrim());
//删除临时的报表文件
                JSFUtil.setSessionAttribute(sessionId, "true");
                
if( fileInputStream == null ){
                  System.out.println(
"==========get inputstream is null========");
                }


                OutputStream o 
= response.getOutputStream();
                response.reset();
                response.setContentType( 
"APPLICATION/OCTET-STREAM" );
                response.setHeader( 
"Content-Disposition""attachment;filename=\"" + "exportExcel.xls""\"" );

                
int length;
                
byte buf[] = new byte[1024];

                
while ( ( length = fileInputStream.read( buf, 01024 ) ) != -1 ) {
                    o.write( buf, 
0, length );
                }

                o.flush();
                o.close();
                fileInputStream.close();


提示错误如下:主要是o.write出问题

java.lang.NullPointerException
        at org.ajax4jsf.framework.ajax.xmlfilter.FilterServletResponseWrapper$By
teArrayServletOutputStream.write(FilterServletResponseWrapper.java:290)


把web.xml中的ajax4jsf的filter给去掉后,一切又恢复正常

有那位仁兄遇到同样情况的吗?

posted @ 2007-11-19 20:16 JGAO编程随笔 阅读(443) | 评论 (1)编辑 收藏

取程序的绝对路径问题

在本地tomcat5中这样没问题
request.getRealPath("/")+"report/config/configFile/"+priv_id+".xml"

但是发布到websphere6后就出问题了
要改成
request.getRealPath("/")+"/report/config/configFile/"+priv_id+".xml"

就是report前要加个"/" 斜杠,加了后tomcat5下也是正确的

posted @ 2007-11-09 18:25 JGAO编程随笔 阅读(236) | 评论 (0)编辑 收藏

程序从oracle移植到db2遇到的问题

 

1.jdk环境问题

jdk环境要改为ibm jdk 5.0, 不然连接不上数据库, 数据库连接池的连接失败,c3p0连接池的连接失败,目前还是默认的方式采用应用服务器的连接池,像tomcat就采用tomcat配置的连接池

eclipse 的开发时用的jre如果修改为ibm的以后,有可能会导致编译不了,这要修改编辑器java类型的编码为gb2312就可以了,genaral->content type –java file

2. 程序中编写sql时的用户模式问题

用户模式要用公共常量,以便修改

不同用户模式之间的表的访问通过授权来解决

3. db2数据库的函数问题

程序中的添加和修改时间的地方的日期函数都要修改成

Date(“2007-01-01”)就是字符串中间有带中杠的

日期转字符串要把原先的to_char改成char(int(2007-01-01))

Kpi的消息串在配置中在取权限priv_id的字符串要加上char(int(priv_id)),如果直接char(priv_id)会多出一个点号

4. oracle树形结构的查询移植到db2存在问题

菜单查询中,有存在层次level的没实现,目前我先通过自己写的函数实现,但存在问题跟没有层次的实现方式一样存在问题

因为通过in的方式,in的存在字段是有限的到时候数据量变多了,sql就会执行失败,可以考虑临时表来解决

5. 序列表seq的长度问题

所有的序列表的序列长度db2是有限制的,好像不能大于8位,这样序列的字段都要做修改,而且不能重复,要进一步确认修改

7. 系统权限移植问题

地区编码的字段从数值型改为字符串类型,很辛苦,建议以后程序的bean的属性都用字符串来定义,避免程序移植的类型修改的问题

8. erwin数据模型问题

数据模型中的部分表没有及时更新,跟开发时用的表有出入,以后数据模型要及时更新

9. 建表的sql语句问题

       建表的sql

 number(12) 这样的都要改成decimal(12,0)

 varchar2都要改成varchar

posted @ 2007-10-27 23:27 JGAO编程随笔 阅读(382) | 评论 (0)编辑 收藏

用ibm的东西

用ibm的东西前先装ibm的jdk

posted @ 2007-10-20 15:33 JGAO编程随笔 阅读(160) | 评论 (0)编辑 收藏

表单提交后获取不到控件的值

有时候我们在表单提交后却获取不到控件的值
可能原因:
1. 控件少了name属性
2.控件被设置成disabled

posted @ 2007-07-06 23:38 JGAO编程随笔 阅读(341) | 评论 (0)编辑 收藏

OutputStream 转 InputStream

使用场合: 操作excel或pdf等文件时需要先写到输出流, 然后又要用到ftp上传该excel或pdf文件需要用到输入流作为参数,这时候我们就可以直接把该文件的输出流转为输入流直接上传到ftp服务器上

  1.
  ByteArrayOutputStream os 
= new ByteArrayOutputStream();
  InputStream is 
= new ByteArrayInputStream(os.toByteArray());

posted @ 2007-06-18 22:41 JGAO编程随笔 阅读(4403) | 评论 (0)编辑 收藏

设置file控件的按钮样式

网上找的,分享一下
<html>
<script>
function fclick(obj){
with(obj){
style.posTop
=event.y-offsetHeight/2
style.posLeft
=event.x-offsetWidth/2
}

}

</script>
<style>
input
{border:1px solid #333333;color:#666666;background:#eeeeee;font:normal 12px Tahoma;height:18px}
</style>
<br>
<br>
<br>
<table>
<tr>
<td>
<form method="post" action="" enctype="multipart/form-data">
<input id="f_file">&nbsp;<input type="button" onmouseover="fclick(t_file)" value="选择上传文件">
<br>
<input name="upload" type="file" style="position:absolute;filter:alpha(opacity=10);width:30px;" id="t_file" onchange="f_file.value=this.value" hidefocus>
<br><input type="submit" value="提交">
</form>
</tr>
</table>
</html>

posted @ 2007-06-14 23:03 JGAO编程随笔 阅读(2466) | 评论 (3)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4 下一页 
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜