Java开发中常见问题小总结

原创|其它|编辑:郝浩|2009-02-27 11:13:24.000|阅读 1222 次

概述:Java开发中常见问题小总结

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

一、问:jsp和java的区别是什么?

答:JSP是JAVA的一种技术,JAVA主要有13种技术,servlet,JSP,jndi...这些是建立在JAVA的基础上发展的技术,JAVA是一种语言,而JSP只是利用JAVA语言实现的一个解决方案,一个技术。

二、问:jsp的内置对象是什么?

答:jsp在运行时被编译成servlet、request、response、session等,jsp内置对象实际是在servlet API定义的。

三、问:struts文件上传编码出现乱码的问题,详细介绍如下:

    做struts(版本为1.3)文件上传(用的是struts自带的org.apache.struts.upload.FormFile实现文件的上传)的时候出现乱码的问题,即提交了包含file类型的input的页面(页面的编码为UTF-8)后,在action中取出参数时出了问题,具体的表现是页面提交的参数中参数值为中文的时候,在action中获得的参数值为乱码,如当上传的文件的文件名为中文时,在action中取得的文件名是乱码。于是我试图用了两种方法解决这一问题:

第一种:在action中的execute最前面写入
       
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       
                    request.setCharacterEncoding("UTF-8");
                    response.setContentType("text/html;chaset=UTF-8");
   
                   FileForm fileForm=(FileForm) form;
                   String spCode= fileForm.getSpCode();
                   System.out.println("spCode"+spCode);
                   FormFile file=fileForm.getUpFile();
                   System.out.println("文件名字是----"+file.getFileName());          
                   return null;
    }

第二种方法:写一个过滤器,该过滤器拦截.do请求,在该过滤器的doFilter方法中写入

 public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
                    System.out.println("到达过滤器");
                    request.setCharacterEncoding("UTF-8");
                    response.setContentType("text/html;charset=UTF-8");
                    chain.doFilter(request, response);
    }

    但是用第一种方法解决不了乱码的问题,用了第二种方法之后就可以解决这个问题了。如果单从功能的实现来讲用第二种方法就可以了,但是加多了一个过滤器必然会导致性能上的降低,同时很多被拦截的请求是不必要对编码进行处理的。到底这两种方法有什么区别吗?

答:上传文件的form的enctype是multipart/form-data,为二进制模式,struts的FormFile封装了一系列的操作,也就是说在ActionServlet封装form时已将request处理过了,数据已放在form里,在Action中处理的Java代码

    request.setCharacterEncoding("UTF-8");  
       response.setContentType("text/html;chaset=UTF-8");  

    request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;chaset=UTF-8");

    已经不能对ActionForm起作用,而filter在ActionServlet之前,所以有效。

四、问:java把两个二维数组合并成一个的高效方法是什么?

答:如果不需要去重的话,Java代码如下:

    String[] a = new String[3];  
    a[0] = "0";  
    a[1] = "1";  
    a[2] = "2";  
 
    String[] b = new String[3];  
    b[0] = "0";  
    b[1] = "1";  
    b[2] = "2";  
 
    String[] c = new String[a.length + b.length];  
 
    for (int j = 0; j < a.length; ++j) {  
        c[j] = a[j];  
    }  
 
    for (int j = 0; j < b.length; ++j) {  
        c[a.length + j] = b[j];  
    } 

五、问:Jtest是开源的么?它和Junit有什么区别? PMD和Jtest有什么区别呢?

答:Jtest不是开源的,功能十分强大,分析能力很强,可以跟踪修改过的代码是否破坏了原有功能,根据团队不同角色分成3个版本,生成各种报表数据等等就更不用说了。Junit是简单的java单元测试工具,一般项目足够了。pmd是开源的,它从Java代码中可以搜索出那些效率低下的代码,bug和常见的编程问题,比如没有使用的new出来的对象等等,检验很严格。

六、问:如何使用dom4j中的类根据xpath表达式创建节点?

    比如:
    xpath = /root/class[@classNumber=165]/student[name=王小明]

    调用dom4j创建xml之后,xml内容显示:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <class classNumber="165">
          <student>
              <name>王小明</name>
          </student>
      </class>
    </root>

答:简单的方式可采用这个代码:

    String simpleExpression = "/root/class/student";

    Document document = DocumentHelper.createDocument();
    DocumentHelper.makeElement(document,xpathExpression );
    System.out.println(document .asXML());


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:慧都科技

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP