2013-12-13 40 views
1

我是jsp的新手。我试图从我的java类访问我的jsp页面的值。我通过了很多页面并实施了很多东西,而我所做的一切都变成了一团糟。 这是我的DAO类方法从java类导入值到jsp

public DisplayDO Display(DisplayDO disDo)throws Exception 
{ 
    System.out.println("inside dao display"); 
    Connection conn = null; 
    try{ 
      conn = DbConnection.getConn(); 
     } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
     Statement statement = null; 
    try{ 
     statement = conn.createStatement(); 
     } 
    catch(SQLException e) 
    { 
     e.printStackTrace(); 
    } 
    System.out.println("dbconnection established"); 
    int userid=disDo.getUserid(); 

    try 
    { 
     System.out.println("inside dao try"); 
     System.out.println("userid = "+userid); 
     String str= "Select address_id from user where user_id =910"; 
     //+userid; 
     PreparedStatement ps= conn.prepareStatement(str) ; 
     ResultSet rs=ps.executeQuery(str); 
     int address1=0; 
     while (rs.next()) 
     { 
      address1= rs.getInt(("address_id")); 
     } 

     int addressid = 0; 
     addressid = address1; 
     System.out.println("values of addressid= "+ addressid +"address1= "+ address1); 
     System.out.println("query execution successfull"); 
     str="select name,street_name,city,gender,reg_date from user,address,registeration where user.address_id="+addressid+" && address.address_id= "+addressid+" && registeration.user_id="+userid+" ;"; 
     rs=ps.executeQuery(str); 
     UserDO user = new UserDO(); 
     RegDO regDO = new RegDO(); 
     AddressDO addressDO = new AddressDO(); 
     while(rs.next()) 
     { 
      user.setName(rs.getString("name")); 
      System.out.println("name= "+rs.getString("name")); 
      addressDO.setStreetname(rs.getString("street_name")); 
      System.out.println("street_name= "+rs.getString("street_name")); 
      addressDO.setStreetname(rs.getString("city")); 
      System.out.println("city = "+rs.getString("city")); 
      regDO.setGender(rs.getString("gender")); 
      System.out.println("gender = "+rs.getString("gender")); 
      regDO.setReg_date(rs.getString("reg_date")); 
      System.out.println("reg_date = "+rs.getString("reg_date")); 
      System.out.println("date using getter"+regDO.getReg_date()); 
     } 
    } 
    catch(Exception e) 
    { 
     e.setStackTrace(null); 
    } 
    return disDo; 

} 

这个代码是可以正常使用,我在控制台中获取值..

下面的代码是我的JSP页面。

<%@page import="java.lang.String" %> 
    <%@page import="java.io.*" %> 
    <%@page import="com.quinoid.e_tender.databean.RegDO"%> 
    <%@page import="com.quinoid.e_tender.databean.AddressDO"%> 
    <%@page import="com.quinoid.e_tender.databean.UserDO"%> 
    <%@ 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>Insert title here</title> 
     </head> 
     <body> 
     <h1>Your Values</h1> 

    <% 
System.out.print("inside display_1"); 
UserDO user=(UserDO)request.getAttribute("name"); 
out.println(user); 
AddressDO add=(AddressDO)request.getAttribute("add"); 
RegDO reg=(RegDO)request.getAttribute("reg"); 
String name,street_name,city,gender,reg_date; 
name=(String)request.getAttribute("user"); 

/*street_name=add.getStreetname(); 
city=add.getCity(); 
gender=reg.getGender(); 
reg_date=reg.getReg_date(); 
*/%> 
<!-- <script type="text/javascript"> 

    /*document.getElementById("name").innerHTML =(String)request.getAttribute("name"); 
document.getElementById("street_name").innerHTML = add.getStreetname(); 
    document.getElementById("city").innerHTML = add.getCity(); 
    document.getElementById("gender").innerHTML = reg.getGender(); 
    document.getElementById("reg_date").innerHTML = reg.Reg_date(); */ 

    </script> --> 
    <form name="innerHTML" method ="post"> 
<table border="1"> 
<tr> 
    <th> Name </th> 
    <th>Street Name</th> 
    <th> City </th> 
    <th> Gender </th> 
    <th>Registration date</th> 
    </tr> 
    <tr> 
      <td id=name>  </td> 
      <td id=street_name> </td> 
      <td id=city>  </td> 
      <td id=gender>  </td> 
      <td id=reg_dae>  </td> 
    </tr> 
</table> 
    </form> 
    </body> 
    </html> 

荫试图显示“姓名”,“慨”,“城市”,“性别”,表中的“reg_date”的价值观和惨败.. 这是导致我的控制台

the servlet is in user display 
    In display method 
    userid= 910 
    inside dao display 
    dbconnection established 
    inside dao try 
    userid = 910 
    values of addressid= 118address1= 118 
    query execution successfull 
    name= anjana 
    street_name= nagar 
    city = tvm 
    gender = F 
    reg_date = 1990-08-15 
    date using getter1990-08-15 
    exiting display method 
    inside display_1 
    inside display_1 

做帮助..在此先感谢..

回答

1

设置该属性在转发到JSP页面之前,你的servlet“请求”。

UserDO user=(UserDO)request.getAttribute("name"); 
out.println(user); 
AddressDO add=(AddressDO)request.getAttribute("add"); 
RegDO reg=(RegDO)request.getAttribute("reg"); 
String name,street_name,city,gender,reg_date; 
name=(String)request.getAttribute("user"); 

设置这些值

request.setAttribute("name",userDo); //UserDo instance. 
request.setAttribute("add",addressDo);//AddressDO instance. and so on... 

,并转发

request.getRequestDispatcher("xxxx").forward(request,response);//xxxx is jsp page you are forwarding. 

而且使用

<%=xxx%>//xxx is the reference as **name**, **city**.. 
0

尝试用下面的代码获得JSP的价值,

document.getElementById("street_name").innerHTML = '<%=add.getStreetname()%>'; 
document.getElementById("city").innerHTML = '<%=add.getCity()%>'; 
document.getElementById("gender").innerHTML = '<%=reg.getGender()%>'; 
document.getElementById("reg_date").innerHTML = '<%=reg.Reg_date()%>'; 
+0

您好..我想你的代码但是我得到一个java.lang.NullPointerException它无法获取控制台中显示的值..它仍然返回null – Alvin

0

您必须将您的属性设置为请求对象,并将servlet类转发到JSP,因为它是JSP中的隐式对象,因此您可以从Request对象获取属性。

但是,当调用getAttribute时,必须将其转换为适当的Object类型。

并确保您没有使用重定向机制,否则您的请求对象将为空,因为它是一个新的JSP对象。只有在Forward Mechanism中,请求对象才会被复制到JSP上的新请求对象。

您可以使用Net上的示例以及 Pradeep Kr Kaushal示例。

我已经写了这个,只是让你通知有关Request对象的Forward和Redirect机制效果。

0

你不叫你dao class显示方法在任何地方。

在你的DAO类,(在Java中开始与约定小写字母方法名),改变方法,像这样:

public DisplayDo display() throws Exception { ... 

在方法的结束,从结果填充它们之后,初始化一个DisplayDo对象,并设置userDo,addressDo和regDo对象:

DisplayDO displayDo = new DisplayDO(); 
    displayDo.setRegDo(regDO); 
    displayDo.setAddressDi(addressDO); 
    displayDo.setUserDo(userDO); 

在你的JSP,添加导入您的DAO类(假设它被称为DisplayDao):

<%@page import="com.quinoid.e_tender.dao.DisplayDao"%> 

添加到您的JSP来创建一个新的DisplayDao并访问其display()方法:

<% DisplayDao displayDao = new DisplayDao(); 
    DisplayDo displayDo = displayDao.display(); 
    UserDO userDo = displayDo.getUserDo(); 
    ... 
%> 

然后,您可以输出值是这样的:

<td id="name"><%= userDo.getName() %></td>