2014-10-09 1 views
-1

JSP를 사용하여 양식 데이터 페이지를 만들고 ajax 호출을 적용하여 MS 액세스에 데이터를 저장하려고했지만 양식 데이터가 저장되지 않아 콘솔에 오류가 표시되지 않는 등의 어려움을 발견했습니다. 나를 인도 해주십시오 ..Ajax JSON 및 jsp

내의 login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Login</title> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 


<script type="text/javascript"> 

     function sendData() 
     { 
       alert("I m in SendData Function"); 
       var email=$('#email').val(); 
       var name=$('#name').val(); 
       var password=$('#password').val(); 

       alert("i am in senddata mode"); 
       var jsonDataObject=new Object(); 
       alert(" JSON call"); 
       jsonDataObject.name=name; 
       jsonDataObject.email=email; 
       jsonDataObject.password=password; 


     var jsonString= JSON.stringify(jsonDataObject); 
     alert("Before Ajax call"); 

     $.ajax({ 

        type:"POST", 

        url:"localhost:8080/RestDemo/UserInfoService", 

        dataType:"json", 
        data:jsonString 

     }); 

       alert("After Ajax Call Send Data"); 

}  
</script> 
</head> 
<body bgcolor=#D8D8D8> 
<form name="form" method="post" onsubmit="sendData()"> 
<div style="margin-left:300px;margin-top:110px;background-color:#5FB404;padding:20px;width:650px;height:450px" > 
<h1><center> Login Registration Form</center></h1> 
<pre> 
<p style="font-size:20px"> 
NAME   :<input type="text" name="name" id="name" ><br> 
EMAIL   :<input type="text" name="email" id="email" ><br> 
PASSWORD  :<input type="password" name="password" id="password"> 
<center><input type="submit" name="submit" value="SUBMIT" style="padding:7px"></center> 

</p></pre> 

</div> 
</form> 
</body> 
</html> 

2.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/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>RestDemo</display-name> 
    <welcome-file-list> 
    <welcome-file>login.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <!-- Register resources and providers under com.vogella.jersey.first package. --> 
    <init-param> 
     <param-name>jersey.config.property.packages</param-name> 
     <param-value>Service</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

3.UserInfo.java

package Service; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.FormParam; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Consumes(MediaType.APPLICATION_JSON) 

@Path("/UserInfoService") 


public class UserInfo { 

    @POST 

    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    //@Produces(MediaType.APPLICATION_XML) 


    public void setDetails(@FormParam("name") String name, @FormParam("email") String email, 
       @FormParam("password") String password) 
    { 
     UserDetailsDao userDetailsDao=new UserDetailsDaoImpl(); 
     userDetailsDao.getUserDetails(name, email, password); 
    } 
} 

4.UserDetailDao.java

package Service; 

public interface UserDetailsDao { 
    public void getUserDetails(String name,String email,String password); 

} 

당신은 아약스의 게시물이 URL url:"localhost:8080/RestDemo/UserInfoService"을 변경해야합니다

package Service; 
import java.sql.*; 

public class UserDetailsDaoImpl implements UserDetailsDao { 


    @Override 
    public void getUserDetails(String name, String email, String password) 
    { 
      System.out.println("Test"); 
       try 
       { 
        Connection conn; 
        Statement stmt; 
        ResultSet rs; 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       conn=DriverManager.getConnection("jdbc:odbc:DataInsert","",""); 
       stmt=conn.createStatement(); 

       int nrow=stmt.executeUpdate("Insert into UserTable values('"+name+"','"+email+"','"+password+"')"); 
       if(nrow>0) 
       {  
       System.out.println("Record Inserted"); 
       } 
       rs=stmt.executeQuery("SELECT * FROM UserTable"); 
       while(rs.next()) 
       { 
        String getName = rs.getString(1); 
        String getEmail = rs.getString(2); 
        String getPassword = rs.getString(3); 

       System.out.println(getName+"  "+getEmail+"   "+getPassword); 
       } 
      rs.close(); 
      stmt.close(); 
      conn.close(); 

      } //end of try block 
      catch(ClassNotFoundException e) 
      { 

      e.printStackTrace(); 

      } 
      catch(SQLException w) 
      { 
      w.printStackTrace(); 

      } 
     } 

} 
+1

코드를 포맷하고 문제를 언급주십시오 JSP 파일에서 UserInfo을 요구하고 기대합니다. _ 디버깅을 시도 했습니까? _ –

+0

ajax 호출에서 URL이 무엇이되어야하는지 안내해주십시오. –

답변

0

5.UserDetailDaoImpl.java, 매핑 된 서블릿 파일에 대한 URL 패턴해야 in Web.xml

$.ajax({ 
        type:"POST", 
        url:"/UserInfoService", 
        dataType:"json", 
        data:jsonString 

     }); 

위의 방법이 효과가 없다면 /rest/UserInfoService을 시도하십시오.

난 당신이

+0

귀하의 답변을 고맙습니다. .. 진짜로 나를 도왔습니다 .. 프로그램 작동 ..하지만 MS 액세스의 JSP 페이지를 통해 삽입 된 데이터는 NULL로 표시됩니다. Ajax 호출이나 SQL 또는 연결에 문제가 있습니까? 저를 안내해주십시오 –

+0

어떤 excpetions? 데이터베이스의 데이터 유형을 확인하십시오 –

+0

stringify 함수 대신 배열 형식으로 데이터를 보내면 작동합니다. var arr = { "name": name, "email": 이메일, "password": password } ; –

0
New login.jsp page 

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Login</title> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 


<script type="text/javascript"> 

     function sendData() 
     { 
       alert("I m in SendData Function"); 
       var email=$('#email').val(); 
       var name=$('#name').val(); 
       var password=$('#password').val(); 


       alert("i am in SendData mode"); 

       var arr = {"name": name, 
         "email": email, 
         "password": password    
         }; 



     alert("Before Ajax call"); 

     $.ajax({ 

        type:"POST", 

        url:"rest/UserInfoService", 

        dataType:"json", 
        data:arr 


     }); 

       alert("After Ajax Call Send Data"); 

}  
</script> 
</head> 
<body bgcolor=#D8D8D8> 
<form name="form" method="post" onsubmit="sendData()"> 
<div style="margin-left:300px;margin-top:110px;background-color:#5FB404;padding:20px;width:650px;height:450px" > 
<h1><center> Login Registration Form</center></h1> 
<pre> 
<p style="font-size:20px"> 
NAME   :<input type="text" name="name" id="name" ><br> 
EMAIL   :<input type="text" name="email" id="email" ><br> 
PASSWORD  :<input type="password" name="password" id="password"> 
<center><input type="submit" name="submit" value="SUBMIT" style="padding:7px"></center> 

</p></pre> 

</div> 
</form> 
</body> 
</html>