<?xml version="1.0" encoding="UTF-8" ?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix">
<value>.jsp</value>
</property>
</bean><bean name="login" class="ydm.SprintController" autowire="byName"></bean><bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.do">login</prop></props>
</property>
</bean>
</beans>这是ideawu-servlet.xml,和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"  
>
     <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
这段是用来加载其他配置文件,因为我只是想实现以下spring的mvc,所以配置文件很少,而ideawu-servlet.xml是放在web.xml同级目录下,我想没必要在这里面特意写一些,我就感觉这段是没用的,我就把它删掉,怪事就出现了,我删掉这段话,tomcat就起不来了,而我这段话放在这里,我又没加其他配置文件,我感觉莫名其妙的,这是其一
</param-value>
</context-param>
    
         <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>ideawu</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>ideawu</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
这是web.xml配置文件
我把上面红色的话加入后,tomcat能够正常启动,
然后我有一个index.jsp <form action="login.do">
   <input type="text" name="username">
   <input type="submit">
   </form>hello.jsp <body>
    <%=request.getParameter("username") %>
  </body>protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
String str=arg0.getAttribute("username").toString();
return new ModelAndView("hello","username",str);
}
这是那个控制类,
然后部署,一点提交就出现下面错误
 Servlet.service() for servlet [ideawu] in context with path [/spring] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at ydm.SprintController.handleRequestInternal(SprintController.java:15)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:284)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:322)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1714)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
这是日志记录的错误,我很郁闷,这么简单的过程,我就是想不通哪里会出现空指针错误,我实在是搞不定了,我们公司对spring是情有独钟什么都用spring来做,就连基本的mvc也要用spring,我就是想熟悉spring mvc的流程,没想到这在里继续不下去了,郁闷,请教

解决方案 »

  1.   

    还有个问题,spring默认会加载applicationContext.xml文件,我这里感觉不需要这个文件,我没有可以吗
      

  2.   

    spring的applicationContext.xml不是必须有的,这个可以没有。主要看你在web.xml的配置,然后它才会加载xml文件
      

  3.   

    可我没有这个文件,出现这样的错误 java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
      

  4.   

    String str=arg0.getAttribute("username").toString();
      

  5.   

    通过表单和链接传递的参数使用getParameter , 你用了arg0.getAttribute("username"),那么它返回null,
    null.toString();肯定报空指针的错了