如何动态地将值从JSP传递给Struts java代码

时间:2014-11-03 10:35:28

标签: java jsp jdbc struts2 ognl

我正在研究Struts。我有一个JSP登录页面,用户将通过该页面提交他的数据。之后,如果有人想要搜索他的数据,他必须输入他的id号码。我希望动态输入id。此id no将传递给Java页面。我正在使用JDBC。任何人都可以帮我如何编写查询和设置字符串函数。

这是我的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","Ericsson@123");  

  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>   

1 个答案:

答案 0 :(得分: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对象中具有相应的getter。

加载类和打开连接(你忘了关闭)是不好的。要获取Connection对象,您可以配置和使用数据源。请参阅示例How JSF is inegrated with JDBCHow to create MySQL database connection in web.xml of Apache Tomcat using Struts 2