如何以编程方式知道web.xml是否正在读取我的spring配置文件

时间:2015-07-22 08:37:16

标签: java spring

我正在运行简单的spring应用程序。我在运行时正确配置了web.xml和spring配置文件我没有得到任何异常但是当我点击提交按钮时我得到404例外。我知道我的弹簧配置文件没有读取控制器不进入控制器类。有没有办法找到我的弹簧配置文件是否读取。

我的web.xml文件

<servlet>
      <servlet-name>DispatcherServlet</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/DispatcherServlet-servlet.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
      <servlet-name>DispatcherServlet</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>

弹簧配置文件

 <context:component-scan base-package="com.nic" />
   <!-- <bean name="testclass" class="com.nic.ExampleTest"/> -->

   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>

jsp文件

form id="form" action="hello.html" method="post">
User Name:<input type="text" name="uname"/><br/>
<input type="button" value="submit"/>

这是我的控制器类

@RequestMapping(value="/hello.html",method=RequestMethod.POST)
public String getBean(HttpServletRequest request,ModelMap map) throws IOException, ParserConfigurationException, SAXException{
    URL resource =  request.getServletContext().getResource("/WEB-INF/spring/DispatcherServlet-servlet.xml");

    InputStream in = resource.openStream();
    DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance();
    docBuilderFactory.setValidating(false);
//  docBuilderFactory.setFeature("http://xml.org/sax/features/validation", false);
//  docBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
    DocumentBuilder  dBuilder = docBuilderFactory.newDocumentBuilder();

    Document doc = dBuilder.parse(in);

    doc.getDocumentElement().normalize();

    NodeList nList = doc.getElementsByTagName("bean");

    for (int temp = 0; temp < nList.getLength(); temp++) {

        Node nNode = nList.item(temp);


        if (nNode.getNodeType() == Node.ELEMENT_NODE) {

            Element eElement = (Element) nNode;

            if(eElement.getElementsByTagName("path")!=null){

                //System.out.println("path : " + eElement.getAttribute("path"));
            }

        }
    }


    return "success";
}

1 个答案:

答案 0 :(得分:0)

根据您发布的内容,看起来Spring只是按照您要求它执行的操作。

  • 您在web.xml中正确声明了DispatcherServlet,并明确地给它一个xml配置文件
  • 调度程序servlet映射到/,这意味着应用程序应该能够直接提供不在WEB-INF下的资源(jsp,css,images)
  • 在xml配置文件中,您只声明InternalResourseViewResolver - 无控制器声明

当您点击提交按钮时,浏览器会将请求发布到/current_path_of_jsp/hello.html。但是当你忘记<mvc:annotation-driven />时(正如M. Deinum在评论中已经注意到的那样),Spring没有处理@RequestMapping注释。

BTW:您没有显示控件是否使用@Controller@Component@RequestMapping进行注释...