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

nqwrtyyt  于 2024-01-04  发布在  Java
关注(0)|答案(1)|浏览(309)

我在Struts工作。我有一个JSP登录页面,通过它用户将提交他的数据。之后,如果有人想搜索他的数据,他必须输入他的id。我希望这个id是动态输入。
这个id会传递给一个Java页面。我用的是JDBC。如何写查询和设置字符串的函数?

以下是我的Java代码:

  1. // package com.javatpoint;
  2. import java.sql.*;
  3. import java.util.ArrayList;
  4. public class Display {
  5. ArrayList<User> list=new ArrayList<User>();
  6. User user= new User();
  7. public ArrayList<User> getList() {
  8. return list;
  9. }
  10. public void setList(ArrayList<User> list) {
  11. this.list = list;
  12. }
  13. public String execute(){
  14. try{
  15. Class.forName("com.mysql.jdbc.Driver");
  16. Connection con=DriverManager.getConnection(
  17. "jdbc:mysql://localhost:3306/test","root","Ericsson@123");
  18. PreparedStatement ps=con.prepareStatement("select * from STRUTSUSER where id=?");
  19. ps.setInt(0,user.getId());
  20. ResultSet rs=ps.executeQuery();
  21. while(rs.next()){
  22. User user=new User();
  23. user.setId(rs.getInt(1));
  24. user.setName(rs.getString(2));
  25. user.setPassword(rs.getString(3));
  26. user.setEmail(rs.getString(4));
  27. list.add(user);
  28. }
  29. }catch(Exception e){e.printStackTrace();}
  30. return "succes";
  31. }
  32. }

字符串

struts.xml

  1. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD
  2. Struts Configuration 2.1//EN"
  3. "http://struts.apache.org/dtds/struts-2.0.dtd">
  4. <struts>
  5. <package name="anbc" namespace="/" extends="struts-default">
  6. <action name="display" class="com.javatpoint.Display">
  7. <result name="success">display.jsp</result>
  8. </action>
  9. </package>
  10. <package name="abc" namespace="/" extends="struts-default">
  11. <action name="login" class="com.javatpoint.Register">
  12. <result name="success">welcome.jsp</result>
  13. </action>
  14. </package>
  15. </struts>

fruv7luv

fruv7luv1#

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

  1. public User getUser(){
  2. return user;
  3. }

字符串
当动作被调用时,它会将参数设置为用户对象。

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


查看使用PreparedStatement的详细信息。
您应该返回Action.SUCCESS结果,并且不需要将结果命名为"success",因为它是默认名称。

  1. return Action.SUCCESS;


如果您将用户id作为参数传递,则列表中不会有多个对象,但要在JSP中绑定列表,可以使用iterator标记

  1. <s:iterator value="list">
  2. ID: <s:property value="id"/><br>
  3. Name: <s:property value="name"/><br>
  4. Email: <s:property value="email"/><br>
  5. </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

展开查看全部

相关问题