kamiiyuID:kamiiyu
34004次访问,排名3354好友0人,关注者0
kamiiyu的文章
原创 16 篇
翻译 0 篇
转载 51 篇
评论 5 篇
kamiiyu的公告
一个菜鸟的Blog,留下一些自己学习的印迹,有什么错误欢迎大家拍砖指正交流~ 谢谢!
最近评论
mohroq:wow gold,
sealrose:谢谢你^^
kamiiyu:呵呵,谢谢卡卡西的意见,其实这段代码我也是在网上找到的,但是忘了标明是转贴。

当初我在刚学swing的时候,看到标准类库里有在在jtable加checkbox等控件的方法,所以就像如果我能不能加一个按钮上去,刚好又在网上找到这段代码所以就贴过来了。

不过很感谢你的批评和指正,有空我会去你那转转的。
卡卡西:this.setText((value == null)? "": ((JButton)value).getText());

我想你如果仔细想想这句代码,我想你自己也会笑。想想这个 this是什么?
MyTableCellRenderer extends JButton
这句说明了一切!
卡卡西:Swing:

Sun优秀科学家和Netscape杰出工程师的作品!

  Swing出现了快10年了,凭借其先进的设计思想,一直未曾落后于哪种语言的界面开发技术,使用和理解Swing的设计思想,对软件开发者大有裨益。

http://www.douban.com/group/15620/
我在豆瓣上开的小组,有兴趣聊聊!
<……
文章分类
    收藏
    相册
    Hello
    emu in blogjava
    Rey的技术博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 struts乱码解决收藏

     | 旧一篇:  Servlet中的八大Listener

     

    struts乱码解决
    国庆没地方去所以就学习了一下struts,用struts做了一个新闻管理系统;
    但插入数据库中的中文总是出现乱码,经过一个上午的努力,终于把乱码问题给解决了,以下就是我查找与解决乱码的过程:
    1,既然显示在网页那的是乱码,首先得确定在数据库中的内容是否能正确显示,我用的数据库为MYSQL4.1,
    打开控制台,select * from news;果然,在数据库中所插入的内容都为乱码,然后我试下手动插入中文,
    出现错误,data too long.......,怎么可能?我用的类型为varchar(100),而插入的数据只为三个中文,不应该会出现数据过长的错误呀,
    后来想想可能是编码的问题,所以把原来的表删了,重建一个,并设置编码为GB2312
    CREATE TABLE NEWS(
    ID INT PRIMARY KEY,
    TITLE   VARCHAR(100) NOT NULL,
    CONTENT VARCHAR(400) NOT NULL,
    AUTHOR  VARCHAR(40) NOT NULL,
    TIME    DATE           NOT NULL,
    KEYWORD VARCHAR(20) NOT NULL,
    TYPE    INT        NOT NULL
    )CHARSET=GB2312;
    然后重新插入,OK可以正确的插入中文了,数据库方面的问题解决;
    2.然后在网页那重新插入中文,同样还是乱码!!
    以下是我的添加新闻的类:
    package newsBean;

    import java.util.Vector;

    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import javax.sql.DataSource;

    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.action.ActionMessages;
    import org.apache.struts.validator.DynaValidatorForm;

    /**
     * @author sxwailyc
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class NewsAddAction extends Action {

     /* (非 Javadoc)
      * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
      */
     public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response) throws Exception {
      // TODO 自动生成方法存根
      DynaValidatorForm newsForm =(DynaValidatorForm)form;
      String title=(String)newsForm.get("title");
      System.out.println(title);  
      String content=(String)newsForm.get("content");
      String author =(String)newsForm.get("author");
      String keyword =(String)newsForm.get("keyword");
      Integer newsType= (Integer)newsForm.get("newsType");
      HttpSession session=request.getSession();
      Vector newsList=new Vector();
      ServletContext context=servlet.getServletContext();
      DataSource dataSource=(DataSource)context.getAttribute(Constants.DATASOURCE_KEY);
      DB db=new DB(dataSource);
      String PageForward=null;
      News news=new News();
      news.setTitle(title);
      news.setContent(content);
      news.setAuthor(author);
      news.setKeyword(keyword);
      news.setType(newsType.intValue());
      ActionMessages errors = new ActionMessages();
      if(news.Insert(db)){
       newsList =News.SearchNewsTitle(db);
       session.setAttribute(Constants.NEWS_LIST_KEY,newsList);
       PageForward="toAdminMain";
      }
      else{
       errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("errors.insertFail"));
       if(!errors.isEmpty()){
        saveErrors(request,errors);
       }
       PageForward="toWrong";
      }
      db.close();
      return mapping.findForward(PageForward);
      
    }
    }
    首先考虑到在从提交表单的页面传递过来的数据是否是乱码呢?
    在这里加了一句String title=(String)newsForm.get("title");System.out.println(title);
    果然,在这里打印出来的title居然是乱码!!!!!苦恼!就是这个问题,弄了一个多钟,
    最后重新检查一下提表单的JSP页面,原来在表单那的<form method="post"> 少写了post!!!
    导制表单递数据时出现乱码,添加method="post";重新system.out.println("title");
    中文正确显示!!
    3.以为应该能正确显示中文了,添加->浏览,还是乱码! 
    应该是页面编码的确良问题!
    解决方法:
    写一个自己的ActionServlet
    MyActionServlet
    public class MyActionServlet extends ActionServlet {

     /* (非 Javadoc)
      * @see org.apache.struts.action.ActionServlet#process(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
      */
     protected void process(HttpServletRequest request, HttpServletResponse response)
       throws IOException, ServletException {
      // TODO 自动生成方法存根
      request.setCharacterEncoding("GB2312");//设置编码为GB2312
      response.setCharacterEncoding("GB2312");
      System.out.println("设置成功");
      super.process(request, response);
     }
    }
    在web.xml中配置一下
            <servlet>
      <servlet-name>actionServlet</servlet-name>
      <servlet-class>newsBean.MyActionServlet</servlet-class>
     </servlet>
    4.这下应试没问题了吧,添加->浏览.又是乱码,再重新检查一遍,都没问题呀!!
    最后想想,会不会是数据源那的编码问题,在struts_config.xml那设置数据库编码
    <set-property property="url"
    value="jdbc:mysql://localhost:3306/sample?useUnicode=true&amp;characterEncoding=GB2312"/>
    重启tomcat
    添加->浏览;
    哈哈,中文终于能正确显示了!

    发表于 @ 2007年05月10日 11:43:00|评论(loading...)|编辑

     | 旧一篇:  Servlet中的八大Listener

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © kamiiyu