第1、2、3天笔记

来源:互联网 发布:性能优化方法 编辑:程序博客网 时间:2024/05/22 19:47
 在网上搜索了很多关于Struts2的资料,一开始无从下手,最后首先选择了使用了Alveole Web的插件,发现它的功能真的很强大,不需要知道struts2的太多内容,按照官方提供的教程就可以很轻松的配制出见到的struts程序。使用了之后看看其自动生成的文件,发现有很多是冗余的,所以还是不太适合初学者去使用去了解struts2的构成。之后按照网上下载的一个教程
http://www.javaeye.com/topic/127704。按照其第一页的配置后,就可以运行了,其中出现了一个问题在代码
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2.     pageEncoding="ISO-8859-1"%>
  3. <%@ taglib prefix="s" uri="/struts-tags" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  8. <title>hello</title>
  9. </head>
  10. <body>
  11. Hello World!
  12. <s:form action="HelloWorld">
  13. Name: <s:textfield name="name"></s:textfield>
  14. <s:submit></s:submit>
  15. </s:form>
  16. </body>
  17. </html>

在第8行的地方会报错,但是不影响运行的。在其成功运行后,我在尝试使用xml配置网页内容的时候,有出现了一个很有趣的问题,在网上搜索也有其他的人遇到了这个问题。我使用的是dom4j进行xml的书写。

以下是调试正确的代码:

  1. package tutorial;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import javax.servlet.ServletContext;
  6. import org.apache.struts2.ServletActionContext;
  7. import org.dom4j.Document;
  8. import org.dom4j.DocumentException;
  9. import org.dom4j.Element;
  10. import org.dom4j.io.SAXReader;
  11. import org.junit.runner.Request;
  12. import com.opensymphony.xwork2.ActionSupport;
  13. public class HelloWorld extends ActionSupport {
  14.     /**
  15.      * 
  16.      */
  17.     private static final long serialVersionUID = -385706973710871360L;
  18.     private String name;
  19.     private String title;
  20.     public String getName()
  21.     {
  22.         return name;
  23.     }
  24.     public void setName(String name)
  25.     {
  26.         this.name=name;
  27.     }
  28.     public String execute() throws DocumentException, FileNotFoundException
  29.     {
  30.         SAXReader reader=new SAXReader();
  31.         File file=new File((Thread.currentThread().getContextClassLoader().getResource("")).toString().substring(6)+"config/config.xml");
  32.         Document document=reader.read(file);
  33.         Element rootElm=document.getRootElement();
  34.         Element element=rootElm.element("title");
  35.         System.out.println(file.toString());
  36.         title=element.getText();
  37.         name="HELLO, "+name+"!";
  38.         return SUCCESS;
  39.     }
  40.     public String getTitle() {
  41.         return title;
  42.     }
  43.     public void setTitle(String title) {
  44.         this.title = title;
  45.     }
  46. }

下面说说说调试的时候遇到的问题。在代码36行使用了Thread.currentThread().getContextClassLoader().getResource(""))是用来查找当前的绝对路径但其前面有file:/所以需要裁剪掉。这里为什么使用绝对路径呢?在用Junit进行单元调试的时候,不使用绝对路径在执行下一条语句的时候 Document document=reader.read(file);可以正常的运行通过。但是在使用tomcat进行调试的时候,就会出现问题。之后通过打印其使用相对路径后的程序认为的绝对路径是错误的,它会默认到eclipse所在的目录。所以在这里我强制使用了绝对路径去定位,问题得到解决。

    继续开始下一步的探索啦~

    希望对初学者有用~    

原创粉丝点击