2016-08-22 3 views
1

Früher arbeitete mein Code, aber jetzt bin ich mit diesem Fehler konfrontiert Manchmal funktioniert der Code und manchmal funktioniert es nicht.Keine Zuordnung gefunden für HTTP-Anfrage mit URI [/ LoginApp /] in DispatcherServlet mit dem Namen 'java4s'

Mein Code ist

Java4sController.java

package java4s; 

import javax.validation.Valid; 
import javax.servlet.http.HttpServletRequest; 
//import javax.servlet.http.HttpServlet; 
//import javax.servlet.*; 
import javax.servlet.http.*; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import java.sql.*; 
//import org.h2.jdbcx.JdbcConnectionPool; 


//import org.springframework.security.core.context.SecurityContextHolder; 


@Controller 
public class Java4sController {  

    HttpSession session; 
    String uname="",pass=""; 
    Statement stmt; 
    Connection conn; 

     @RequestMapping(value="displayForm.html", method=RequestMethod.GET) 
     public String helloWorld(UserDetails ud,HttpServletRequest request,HttpServletResponse response) { 
      return "loginPage";    
     } 



     @RequestMapping("/login") 
     public String loginCheck(@Valid UserDetails userDetails, BindingResult result, ModelMap model,HttpServletRequest request,HttpServletResponse response)throws Exception 
     { 
      System.out.println("In the login page"); 

      String username=userDetails.getUser(); 
      String password=userDetails.getPassword(); 

      if (result.hasErrors()) { 
       return "loginPage"; 
      } 
      try { 
      Class.forName("org.h2.Driver"); 
      conn = DriverManager. 
       getConnection("jdbc:h2:file:C:/Users/patilv/test", "sa", ""); 
      // add application code here 
if(conn!=null) { 
    System.out.println("No connection"); 
} 

      stmt=conn.createStatement(); 
String sql="Select * FROM table1 WHERE username='"+username+"' AND password='"+password+"' "; 
ResultSet rs=stmt.executeQuery(sql); 




while(rs.next()) 
{ 
    uname=rs.getString("username"); 
    pass=rs.getString("password"); 


      if (result.hasErrors()) { 
       return "loginPage"; 
      } 

      else if(username.equals(uname)&&password.equals(pass)) 
      { 
       //session.invalidate(); 
       response.setHeader("Cache-Control","no-cache"); 
       response.setHeader("Cache-Control","no-store"); 
       response.setDateHeader("Expires", 0); 
       response.setHeader("Pragma","no-cache"); 
       session = request.getSession(); // create session 

       session.setAttribute("username", username); 
       session.setAttribute("password", password); 
       //String str1=(String)session.getAttribute(username); 

       model.addAttribute("lfobj", userDetails); 
       //model.addAttribute(str1); 
       conn.close(); 

       return "success"; 
      } 



      else 
      { 
       conn.close(); 
       return "loginPage"; 
      } 
} 
     }finally{ 
      //finally block used to close resources 
      try{ 
       if(stmt!=null) 
        conn.close(); 
      }catch(SQLException se){ 
      }// do nothing 
      try{ 
       if(conn!=null) 
        conn.close(); 
      }catch(SQLException se){ 
       se.printStackTrace(); 

      }//end finally try 
     }//end try 
      return "abcd"; 
     } 

     @RequestMapping(value="logoutform", method=RequestMethod.GET) 
     public String helloWorld1(UserDetails ud,HttpServletRequest request,HttpServletResponse response) { 

      System.out.println("\nabcdef\n"); 
      response.setHeader("Cache-Control","no-cache"); 
      response.setHeader("Cache-Control","no-store"); 
      response.setDateHeader("Expires", 0); 
      response.setHeader("Pragma","no-cache"); 
      String username=ud.getUser(); 
      // String password=ud.getPassword(); 

      HttpSession session1; 
      session1=request.getSession(false); 
      System.out.println("Session :"+session1.getAttribute("username")); 
      if(session1!=null) 
      { 
       //session1.removeAttribute(username); 
       session1.invalidate(); 
       Cookie[] cookies = request.getCookies(); 
       for (Cookie cookie : cookies) { 
        cookie.setMaxAge(0); 
        cookie.setValue(null); 
        cookie.setPath("/"); 
        response.addCookie(cookie); 
       } 
       System.out.println("invalidating session"); 
       //session1.invalidate(); 
      } 

      return "logoutsuccess";    
     } 

} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4"> 
<servlet> 
    <servlet-name>java4s</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>java4s</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
</web-app> 

java4s-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> 
<context:component-scan base-package="java4s" /> 
    <mvc:annotation-driven /> 
    <!-- <mvc:resources mapping="/scripts/**" location="/WEB-INF/" /> --> 


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

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
     <property name="basename" value="props" /> 
    </bean> 

</beans> 

Meine Verzeichnisstruktur ist

enter image description here

+0

Ihre URL-Muster für Ihre Servletzuordnung scheint ein wenig seltsam, java4s-servlet.xmlin web.xml erwähnen sollte es nicht sei einfach * oder/*? sonst könnte es nur auf url antworten mit .jsp – lepak

+0

Ich versuchte dies, aber es hat nicht funktioniert. –

+0

Müssen Sie den Endpoint auf Ihrem Controller mit .html beenden? Ich bin mir nicht sicher, ob dies eine korrekte Methode zur Verwendung dieser Anmerkung ist. Können Sie ' \ *' in der Servlet-Zuordnungsdeklaration und '@RequestMapping (Wert ="/displayForm ", Methode = RequestMethod.GET)' in der Steuerung versuchen? – lepak

Antwort

3

Ihr Code enthält einige Tippfehler.

1. URL ist nicht einheitlich

  • displayForm.html
  • /login
  • logoutForm

2.In web.xml Mapping nicht richtig ist

  • <url-pattern>*.jsp</url-pattern>

So ist Lösung ein Format beibehalten oder die Zuordnung ändern.

In web.xml

<url-pattern>/</url-pattern> und jedes Format wie *.html,*.action,*.do verwenden.

hinzufügen / alle RequestMappings wie /displayForm.html,/logoutForm

und der Fehler wird keine Zuordnung für HTTP-Anforderung mit URI gefunden [/ LoginApp /]

  • Grund ist, gibt es keine Anfrage Mapping für / . Schreiben Sie eine Methode, um / Anfrage zu bearbeiten, und platzieren Sie index.jsp unter WEB-INF/pages.

    @RequestMapping(value="/", method=RequestMethod.GET) public String loadApp(UserDetails ud,HttpServletRequest request,HttpServletResponse response) { return "index"; }

UPDATE:

Versuchen durch die

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>  
      /WEB-INF/java4s-servlet.xml  
     </param-value> 
    </context-param> 
+0

Ich habe die web.xml geändert zu /* und auch hinzugefügt/zu allen Anfrage-Mappings /displayForm.html,/logoutForm noch gibt es einen Fehler. Kein Mapping für HTTP-Anfrage mit URI [/LoginApp/WEB-INF/page/index.jsp] im DispatcherServlet mit dem Namen 'java4s' –

+0

gefunden. Fügen Sie die in der Antwort angegebene Methode 'loadApp' hinzu und entfernen Sie die Willkommensdatei in web.xml –

+0

Ja, ich habe diese Methode hinzugefügt –

Verwandte Themen