Java 如何从Struts 2中动态生成的JSP页面获取数据?
我正在使用Struts2生成下面的页面。它正在正常生成 我的问题是,当我点击Java 如何从Struts 2中动态生成的JSP页面获取数据?,java,jsp,struts2,jsp-tags,Java,Jsp,Struts2,Jsp Tags,我正在使用Struts2生成下面的页面。它正在正常生成 我的问题是,当我点击delete按钮时,如何从生成的页面中获取值,以便我可以进一步处理从数据库中删除数据并使用剩余数据重新生成页面 在此处插入标题 所有记录: RegisterAction.java package com.javatpoint; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; impor
delete
按钮时,如何从生成的页面中获取值,以便我可以进一步处理从数据库中删除数据并使用剩余数据重新生成页面
在此处插入标题
所有记录:
RegisterAction.java
package com.javatpoint;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class RegisterAction {
private String name,password,email,gender,country;
int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
ArrayList<User> list=new ArrayList<User>();
public ArrayList<User> getList() {
return list;
}
public void setList(ArrayList<User> list) {
this.list = list;
}
public String execute(){
int i=RegisterDao.save(this);
if(i>0){
Connection con=RegisterDao.con;
try {
PreparedStatement ps=con.prepareStatement("select * from STRUTSUSER");
ResultSet rs=ps.executeQuery();
// rs = ps.getGeneratedKeys();
while(rs.next()){
User user=new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(1));
user.setPassword(rs.getString(2));
user.setEmail(rs.getString(3));
user.setGender(rs.getString(4));
list.add(user);
// System.out.println("yo");
}
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
return "error";
}
package com.javatpoint;
导入java.sql.Connection;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
公共类注册操作{
私人字符串名称、密码、电子邮件、性别、国家/地区;
int-id;
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getGender(){
返回性别;
}
公共无效设置性别(字符串性别){
这个。性别=性别;
}
公共字符串getCountry(){
返回国;
}
公共国家/地区(字符串国家/地区){
这个国家=国家;
}
ArrayList=新建ArrayList();
公共ArrayList getList(){
退货清单;
}
公共无效集合列表(ArrayList列表){
this.list=列表;
}
公共字符串execute(){
int i=RegisterDao.save(此);
如果(i>0){
连接con=RegisterDao.con;
试一试{
PreparedStatement ps=con.prepareStatement(“从Strutser中选择*);
结果集rs=ps.executeQuery();
//rs=ps.getGeneratedKeys();
while(rs.next()){
用户=新用户();
user.setId(rs.getInt(1));
user.setName(rs.getString(1));
user.setPassword(rs.getString(2));
user.setEmail(rs.getString(3));
user.setGender(rs.getString(4));
列表。添加(用户);
//System.out.println(“yo”);
}
con.close();
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回“成功”;
}
返回“错误”;
}
您可以尝试以下方法:
public class RegisterAction {
....
public String execute(){
...
}
public List<User> getAllUsers() {
List<User> users = new ArrayList<User>();
Connection con=RegisterDao.con;
try
{
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from STRUTSUSER");
while (rs.next())
{
User user = new User();
user.setID(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("pass"));
user.setEmailID(rs.getString("emailid"));
users.add(user);
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return users;
}
public String delete() {
HttpServletRequest request ServletActionContext.getRequest();
int userId = request.getParameter("id");
deleteUser(userId);
return SUCCESS;
}
private void deleteUser(int userId)
{
Connection con=RegisterDao.con;
try
{
PreparedStatement ps = conn.prepareStatement("delete from STRUTSUSER where id=?");
// Parameters start with 1
ps.setInt(1, userId);
ps.executeUpdate();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
公共类注册操作{
....
公共字符串execute(){
...
}
公共列表getAllUsers(){
列表用户=新建ArrayList();
连接con=RegisterDao.con;
尝试
{
语句Statement=conn.createStatement();
ResultSet rs=statement.executeQuery(“从StrutUser中选择*);
while(rs.next())
{
用户=新用户();
user.setID(rs.getInt(“id”);
user.setName(rs.getString(“name”);
user.setPassword(rs.getString(“pass”);
user.setEmailID(rs.getString(“emailid”);
用户。添加(用户);
}
}
捕获(SQLE异常)
{
e、 printStackTrace();
}
返回用户;
}
公共字符串删除(){
HttpServletRequest请求ServletActionContext.getRequest();
int userId=request.getParameter(“id”);
删除用户(userId);
回归成功;
}
私有void deleteUser(int userId)
{
连接con=RegisterDao.con;
尝试
{
PreparedStatement ps=conn.prepareStatement(“从StrutUser中删除,其中id=?”);
//参数以1开头
ps.setInt(1,用户ID);
ps.executeUpdate();
}捕获(SQLE异常)
{
e、 printStackTrace();
}
}
}
JSP页面:view.JSP
<s:iterator value="list">
...
</s:iterator>
<s:hidden name="id" value="%{#list.id}" />
<s:submit value="delete" name ="delete" action="deleteUserAction"/>
...
在Struts.xml中
<action name="deleteUserAction" class="example.RegisterAction" method="delete">
<result name="success">view.jsp</result>
</action>
view.jsp
删除用户后,可以从操作调用getAllUsers()
希望这有帮助