2016-10-26 3 views
0

하나의 Java 웹 애플리케이션이 있습니다. 내 USER_OBJECTS 클래스는 다음 코드를 사용하여 JSP 내 자바 USER_OBJECTS와JSP에서 Servlet으로 Java 객체 전달

public class User_Objects { 
    public String firstName; 
    public String middleName; 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getMiddleName() { 
     return middleName; 
    } 

    public void setMiddleName(String middleName) { 
     this.middleName = middleName; 
    } 
} 

내가 요청을 전달 아래에 주어진 것은

User_Objects fillObj = fillData(request); 
    request.setAttribute("reqObj", fillObj); 
    RequestDispatcher view = request.getRequestDispatcher("/organization.jsp"); 
    view.forward(request, response); 

public User_Objects fillData(HttpServletRequest request) { 
    User_Objects fillObj = new User_Objects(); 

    try { 
     fillObj.setFirstName(request.getParameter("txtFirstname")); 
    } catch (Exception e) { 
    } 

    try { 
     fillObj.setMiddleName(request.getParameter("txtMiddlename")); 
    } catch (Exception e) { 
    } 

    return fillObj; 
} 

내가 성공적으로 내 JSP 형태로이 객체를받을 수 있습니다. 하지만 서블릿에 다시 객체를 보낼 내가 클릭하면 내 JSP 양식에 버튼을 제출하고 코드 아래 사용하여 내 서블릿으로이 객체를 얻으려고

User_Objects obj = (User_Objects) request.getAttribute("reqObj"); 

request.getAttribute("reqObj")

널 나에게주는 내 JSP 양식 코드는 다음과 같습니다.

<%@ page import="otn.aitc.io.User_Objects" %> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Organization</title> 
<link rel="stylesheet" href="css/jquery-ui.css"> 
<script src="js/jquery-1.12.4.js"></script> 
<script src="js/jquery-ui.js"></script> 
<script> 
    $(function() { 
     var reqObj = '${reqObj}'; 
     var reqStatus = '${orgStatus}'; 
     var orgJson = '${reqOrgJson}'; 
     orgJson = orgJson.replace("/", "'"); 

     if(reqStatus != "" || orgJson != "") { 
      if(reqStatus == "false") { 
       document.getElementById("lblError").style.display = ''; 
      } 
      else { 
       document.getElementById("lblError").style.display = 'none'; 
      } 

      var availableTutorials = []; 
      if(orgJson != "") { 
       var parsed = JSON.parse(orgJson); 
       for(var x in orgJson) { 
        if(parsed[x] != undefined) { 
         availableTutorials.push(parsed[x]); 
        } 
       } 
      } 

      $("#txtOrgName").autocomplete({source: availableTutorials}); 
     } 
     else { 
      window.location.href = "index.jsp"; 
     } 
    }); 

    function validateOrg() { 
     var orgName = document.getElementById("txtOrgName"); 
     if (orgName.value.trim().length == 0) { 
      alert("Enter Org Name"); 
      return false; 
     } 
    } 
</script> 
</head> 
<body> 
    <form name="orgname" action="org_name" method="post"> 
     <table align="center"> 
      <tr align="center"> 
       <td colspan="4"><img src="images/logo.jpg" /></td> 
      </tr> 
      <tr> 
       <td>Organization :</td> 
       <td><input type="text" id="txtOrgName" name="txtOrgName" /><label style="color: red;">*</label></td> 
      </tr> 
      <tr> 
       <td align="center" colspan=2><br/><input type="submit" name="btnOrgName" id="btnOrgName" 
        value="Validate" onclick="return validateOrg();" /></td> 
      </tr> 
     </table> 
     <p align="center"><label id="lblError" style="color: red;">Error Message.</label></p> 
    </form> 
</body> 
</html> 

Eclipse와 함께 Java를 사용하고 있습니다.

+0

** User_Objects **가 일련 번호가 매겨 졌는지 여부. 그렇지 않다면 Serializable 인터페이스를 구현해야합니다. –

+0

@KevalPithva 방금 내 질문을 업데이트했습니다. 다시 확인하십시오. – user3441151

답변

0

다른 실행 범위를 혼합하고 일치시키지 마십시오.

serlvet과 JSP 페이지는 서버 측에서 실행됩니다 (실제로 JSP 페이지도 서블릿으로 컴파일됩니다). HTTP 요청이 완료되면 요청 속성을 포함하여 모든 요청 기반 객체가 삭제됩니다. 결국 HTML 텍스트를 생성하는 템플릿 엔진입니다.

이 HTML 텍스트 (JavaScript 포함)는 클라이언트 브라우저에서 실행됩니다. 이 실행 범위는이 HTML 페이지를 작성한 서버 요청 범위와 완전히 다릅니다. 따라서 JavaScript 코드에서 서버 측에서 해당 페이지를 작성하는 데 사용 된 모든 Java 객체는 알 수 없으며 액세스 할 수 없습니다.

두 가지 대안이 있습니다.

  1. HTML을 만드는 동안 서버 측 객체를 다시 만들 수있는 충분한 정보가 포함되어 있습니다. 예 : 이름 및 연령대 특성이있는 Person 개체가있는 경우 숨겨진 양식 필드로 이름과 나이를 포함 할 수 있습니다. 양식을 제출 한 후 요청 매개 변수로 들어오는 숨겨진 필드 값을 사용하여 Person 개체를 다시 만들 수 있습니다. 프로 : 구현이 간단합니다. 단점 : 작은 데이터에 대해서만 실행 가능합니다. 데이터는 클라이언트에 노출되어 조작 할 수 있습니다.

  2. 세션 내에서 서버 측에 개체를 저장하십시오.
    프로 : 데이터가 클라이언트에 노출되지 않습니다. 단점 : 세션 변수에 동시 액세스가 가능하기 때문에 구현이 더욱 복잡해졌습니다 (브라우저가 동시에 동일한 세션에 대해 여러 요청을 수행 할 수 있음).

관련 문제