2014-11-03 75 views
0

我正在使用Struts。我有一個JSP登錄頁面,用戶將通過它提交他的數據。之後,如果有人想搜索他的數據,他必須輸入他的id沒有。我想要動態輸入這個id。這個id不會被傳遞給Java頁面。我正在使用JDBC。任何人都可以幫助我如何編寫查詢和設置字符串函數。如何將JSP中的值動態傳遞給Struts的java代碼

這裏是我的Java代碼:

// package com.javatpoint; 
import java.sql.*; 
import java.util.ArrayList; 

public class Display { 
ArrayList<User> list=new ArrayList<User>(); 
    User user= new User(); 
public ArrayList<User> getList() { 
    return list; 
} 
public void setList(ArrayList<User> list) { 
    this.list = list; 
} 
public String execute(){ 
try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection( 
       "jdbc:mysql://localhost:3306/test","root","[email protected]"); 

    PreparedStatement ps=con.prepareStatement("select * from STRUTSUSER where id=?"); 
    ps.setInt(0,user.getId()); 
    ResultSet rs=ps.executeQuery(); 

    while(rs.next()){ 
    User user=new User(); 
    user.setId(rs.getInt(1)); 
    user.setName(rs.getString(2)); 
    user.setPassword(rs.getString(3)); 
    user.setEmail(rs.getString(4)); 
    list.add(user); 
    } 


}catch(Exception e){e.printStackTrace();} 

return "succes"; 
} 
} 

struts.xml

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD 
    Struts Configuration 2.1//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 

<package name="anbc" namespace="/" extends="struts-default"> 
    <action name="display" class="com.javatpoint.Display"> 
    <result name="success">display.jsp</result> 
    </action> 
</package> 
<package name="abc" namespace="/" extends="struts-default"> 
    <action name="login" class="com.javatpoint.Register"> 
    <result name="success">welcome.jsp</result> 
    </action> 
</package> 

</struts> 
+0

post'struts.xml',有什麼問題? – 2014-11-03 11:01:46

回答

0

如果您使用的模型User對象,但不使用示範帶動作用,然後由獲得用戶id您應該在請求中使用user.id參數。您還應該使用一個getter爲模型

public User getUser(){ 
    return user; 
} 

當動作被調用時將設置參數的用戶對象。現在將其設置爲查詢中的參數

ps.setInt(1, user.getId()); //parameters are counted from 1..n 

查看使用PreparedStatement的詳細信息。

您應該返回Action.SUCCESS結果,並且不需要命名結果"success",因爲它是默認名稱。

return Action.SUCCESS; 

如果您傳遞用戶ID作爲參數,那麼你就不會得到在列表中有多個對象,但是結合在JSP中可以使用iterator標籤

<s:iterator value="list"> 
    ID: <s:property value="id"/><br> 
    Name: <s:property value="name"/><br> 
    Email: <s:property value="email"/><br>  
</s:iterator> 

的列表屬性在User對象中應該有相應的獲取者。

在行動中加載班級和開放連接(你忘記關閉)是不好的。要獲得Connection對象,您可以配置和使用數據源。例如參見How JSF is inegrated with JDBCHow to create MySQL database connection in web.xml of Apache Tomcat using Struts 2

相關問題