java开发出错笔记.doc

java 开发出错笔记 ---powered by jgao

1.

出错描述: struts 开发中抛出异常java.lang.IllegalArgumentException No destination bean specified

原因: 前面传递过来的表单于后面要显示的表单不一致,或着说前面没绑定表单,而你却使用了如下语句:   

// 语句的作用是初始化UserFormUserForm的值都为空 

User user = new User();    

UserForm userForm = (UserForm)form;     BeanUtils.copyProperties(userForm,user);

处理: 在相对应的action里面加入attributename参数绑定到对应的表单就行了

 

2.

出错描述: struts 开发中抛出异常javax.servlet.ServletException: Cannot retrieve definition for form bean null

原因: 你的页面想跟表单绑定而你的action却没有绑定到表单,所以找不到相应得表单

处理: 在相对应的action里面加入attributename参数绑定到对应的表单就行了

3.

出错描述: struts 开发中 The requested resource (/jgaoForum/user/userList.do) is not available.

原因: 如果你确定你的路径绝对正确,那么看看你的web.xml是否放在webinf目录下,在不行那么你的web.xml配置正确吗?

    < servlet-name > action </ servlet-name >

    < servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >

    < init-param >

      < param-name > config </ param-name >

   // 这里路径对吗?

   < param-value > /WEB-INF/strutsconfig/struts-config.xml </ param-value >

    </ init-param >

  < servlet-mapping >

    < servlet-name > action </ servlet-name >

    < url-pattern > *.do </ url-pattern > // 这里是 *.do 吗?

  </ servlet-mapping >

处理: 再不行我也没办法了

4.

出错描述: jsp+mysql 中文乱码 .

原因: 编码不匹配

处理:

1. 首先建库和建表的时候在后面加上这句ENGINE=InnoDB DEFAULT CHARSET=gb2312

如果mysql版本有支持gb2312的话那么可以在安装的时候选择gb2312,默认是lant1,这样建库和建表的时候就不用加上ENGINE=InnoDB DEFAULT CHARSET=gb2312

2. 数据库连接url要如下形式,后面要加上编码方式

a> 直接在java代码里面

jdbc:mysql://localhost:3306/jgaooa?useUnicode=true&characterEncoding=gb2312

b> 放在配置文件(配置文件最好是xml,并且xml文件头也要有编码方式<?xml version="1.0" encoding="GB2312"?>

jdbc:mysql://localhost:3306/jgaooa?useUnicode=true&amp;characterEncoding=gb2312

3. 每个jsp文件的文件头要加上

<%@ page contentType="text/html;charset=gb2312" %> 不然页面的中文会显示乱码

4. 页面数据之间的传输requestresponse要加上编码,最好的方式就是通过filter过滤器

过滤器代码如下:该代码由javastudio获得

package org.jgao.soft;

 

import java.io.IOException;

 

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

 

/**

 * 中文过滤器

 */

public class SetCharacterEncodingFilter implements Filter {

 

    // ----------------------------------------------------- Instance Variables

 

    /**

     * The default character encoding to set for requests that pass through this

     * filter.

     */

    protected String encoding = null;

 

    /**

     * The filter configuration object we are associated with. If this value is

     * null, this filter instance is not currently configured.

     */

    protected FilterConfig filterConfig = null;

 

    /**

     * Should a character encoding specified by the client be ignored?

     */

    protected boolean ignore = true;

 

    // --------------------------------------------------------- Public Methods

 

    /**

     * Take this filter out of service.

     */

    public void destroy() {

 

        this.encoding = null;

        this.filterConfig = null;

 

    }

 

    /**

     * Select and set (if specified) the character encoding to be used to

     * interpret request parameters for this request.

     *

     * @param request

     *            The servlet request we are processing

     * @param result

     *            The servlet response we are creating

     * @param chain

     *            The filter chain we are processing

     *

     * @exception IOException

     *                if an input/output error occurs

     * @exception ServletException

     *                if a servlet error occurs

     */

    public void doFilter(ServletRequest request, ServletResponse response,

            FilterChain chain) throws IOException, ServletException {

 

        // Conditionally select and set the character encoding to be used

        if (ignore || (request.getCharacterEncoding() == null)) {

            String encoding = selectEncoding(request);

            if (encoding != null)

                request.setCharacterEncoding(encoding);

        }

 

        // Pass control on to the next filter

        chain.doFilter(request, response);

 

    }

 

    /**

     * Place this filter into service.

     *

     * @param filterConfig

     *            The filter configuration object

     */

    public void init(FilterConfig filterConfig) throws ServletException {

 

        this.filterConfig = filterConfig;

        this.encoding = filterConfig.getInitParameter("encoding");

        String value = filterConfig.getInitParameter("ignore");

        if (value == null)

            this.ignore = true;

        else if (value.equalsIgnoreCase("true"))

            this.ignore = true;

        else if (value.equalsIgnoreCase("yes"))

            this.ignore = true;

        else

            this.ignore = false;

 

    }

 

    // ------------------------------------------------------ Protected Methods

 

    /**

     * Select an appropriate character encoding to be used, based on the

     * characteristics of the current request and/or filter initialization

     * parameters. If no character encoding should be set, return

     * <code>null</code>.

     * <p>

     * The default implementation unconditionally returns the value configured

     * by the <strong>encoding</strong> initialization parameter for this

     * filter.

     *

     * @param request

     *            The servlet request we are processing

     */

    protected String selectEncoding(ServletRequest request) {

 

        return (this.encoding);

 

    }

 

}//

 

Web.xml 配置文件如下

<? xml version = "1.0" encoding = "UTF-8" ?>

< web-app version = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

 

    < filter >

       < filter-name > SetCharacterEncodingFilter </ filter-name >

        < filter-class > org.jgao.soft.SetCharacterEncodingFilter </ filter-class >

       < init-param >

           < param-name > encoding </ param-name >

           < param-value > GB2312 </ param-value >

       </ init-param >

    </ filter >

    < filter-mapping >

       < filter-name > SetCharacterEncodingFilter </ filter-name >

       < url-pattern > /* </ url-pattern >

    </ filter-mapping >

</ web-app >

再不能搞定那就把 mysql 扔了

 

posted on 2006-06-11 08:52 JGAO编程随笔 阅读(1377) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜