如何动态地将值从JSP传递到Struts Java代码

nqwrtyyt  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(74)

我在Struts工作。我有一个JSP登录页面,通过它用户将提交他的数据。之后,如果有人想搜索他的数据,他必须输入他的id。我希望这个id是动态输入。
这个id会传递给一个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>

fruv7luv

fruv7luv1#

如果您使用User对象作为模型,但不使用模型驱动操作,那么要通过id获取user,您应该在请求中使用user.id参数。

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

相关问题