index.jsp代码:
<%@ page language = "java" import = "java.util.*" pageEncoding ="GB18030"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<html>
<head>
<title>用户注册</title>
</head>
<body>
<s:form action="user1.action" method="post">
            id:<s:textfield name="user.name"></s:textfield></br>
            pw:<s:password name="user.password"></s:password>
            <s:submit value="提交"></s:submit>
</s:form>
</body>
</html>struts.xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <package name="default" namespace="/" extends="struts-default">
<action name="user" class ="com.bjsxt.hibernate.action.UserAction">
            <result name="success">         
             /registerSuccess.jsp
            </result>
            <result name="fail">registerFail.jsp</result>
        </action>
</struts>UserAction.java代码:
import java.util.Map;
import org.apache.struts2.ServletActionContext;import com.bjsxt.hibernate.model.User;
import com.bjsxt.hibernate.service.UserManager;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class User1Action extends ActionSupport{
private User user ;
private UserManager um ;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserManager getUm() {
return um;
}
public void setUm(UserManager um) {
this.um = um;
}
@Override
public String execute()throws Exception{ user = new User();
um = new UserManager();
user.setName("b");
user.setPassword("b");
if(um.exists(user)){
return "fail";
}
um.add(user);
return "success";

}

}
registerSuccess.jsp
<%@ page language = "java" import = "java.util.*" pageEncoding ="GB18030"%><html>
<head>
<title></title>
</head>
<body>
<h1>success!!!</h1>
</body>
</html>registerFail.jsp
<%@ page language = "java" import = "java.util.*" pageEncoding ="GB18030"%><html>
<head>
<title></title>
</head>
<body>
<h1>fail!!!</h1>
</body>
</html>
User.java代码:
package com.bjsxt.hibernate.model;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User
{
private int id ;

private String name;
private String password; public User(){}
public void setId(int id){
this.id = id;
}
public void setName(String name){
this.name = name;
}


public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Id
@GeneratedValue
public int getId(){
return id;
} public String getName(){
return name;
}

}UserManager.java代码:
package com.bjsxt.hibernate.service;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import com.bjsxt.hibernate.model.User;public class UserManager {
public boolean exists(User u)throws Exception{
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/spring" , "root" , "mysqladmin");

String sqlQuery = "select count(*)from user where name=?";
PreparedStatement psQuery = conn.prepareStatement(sqlQuery);
psQuery.setString(1,u.getName());
ResultSet rs = psQuery.executeQuery();
rs.next();
int count = rs.getInt(1);
conn.close();
if(count > 0){
return true;
}
return false;
}

public void add(User u)throws Exception{
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/spring" , "root" , "mysqladmin");
String sql = "insert into user value (null,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,u.getName());
ps.setString(2,u.getPassword());
ps.executeUpdate();
ps.close();
conn.close(); 
}
}现在的问题是:我按index.jsp页面中提交按钮,就会转执行UserAction类中的execute方法,execute方法内new了一个User对象user,把属性name、password都设成了b,第一次能成功把“b”存到数据库中。第二次在index.jsp表单中输入任何数据提交,因为user的name、password是设成定死的“b”,无论提交什么数据,user的name、password永远都是“b”。这样,也就是第一次提交能“success”,以后都是“fail”。有谁可以帮帮小弟呀!!搞了两天还没明白。

解决方案 »

  1.   

    user.setName("b");
    user.setPassword("b");
    你自己设死了这个值当然不会变啦
      

  2.   

    所以我就想,怎么把输入表单的内容设置到user的name、password里面去。
    我就是没法把输入表单的内容设置到user的name、password里面去,所以请大侠、高手帮忙咯!!!
      

  3.   

    楼主,建议好好下个strutsApi好好学习一下吧,直接在action类中获取user对象不就行了
    干嘛要new 一个user啊 直接获取页面上的user 在set进去不就行了
      

  4.   

    能帮忙写一下吗?我在网上找了两天没找到,只知道struts有三种接收参数的方式,好像用不上呀!
      

  5.   

    action中只要有private User user 和它的get、set方法就可以直接获取到前台传过来的值,不用new对象,struts内部会进行处理
      

  6.   

    //有ActionForm没有,没有新建一个ActionForm 里面放实体类 get set 方法 然后在Action里用
     user =  ActionForm.getUser()//这个就是你页面上的user对象
      

  7.   

    struts2 的Action有bean对象,jsp使用struts标签,ognl可以直接获取bean中的属性或方法!
      

  8.   

    我的UserAction里面有有private User user 和它的get、set方法,可是前台每次都不能传值过来。
    把UserAction类中execute方法里面的“user.setName("b");user.setPassword("b")”;去掉,传过来的都是Null。
      

  9.   

    我把index.jsp改成这样,也不行呀:<%@ page language = "java" import = "java.util.*" pageEncoding ="GB18030"%>
    <%@ taglib prefix = "s" uri = "/struts-tags"%>
    <html>
    <head>
    <title>用户注册</title>
    </head>
    <body>
    <s:form action="user1.action" method="post">
                id:<s:textfield name="user.name"></s:textfield></br>
                pw:<s:password name="user.password"></s:password>
                <s:submit value="提交"></s:submit>
    </s:form>
    </body>
    </html>
      

  10.   

    不用new。我把UserAction类中execute方法里面的“
    user=new User();
    um =new UserManager()
    user.setName("b");
    user.setPassword("b")”;
    去掉,
    就会出现:java.lang.NullPointerException
    com.bjsxt.hibernate.action.User1Action.execute(User1Action.java:42)错误。
    大侠们,加油加油呀!!!
      

  11.   

    不用 new User 直接把user 弄成属性然后 获取表单值 调用setters方法 就行了 不用你new 框架有动态代理和依赖注入帮你弄了
      

  12.   

    user实例化了,set的话,只能set一个呀。我的index.jsp页面的form表单可是要提交很多数据的呀,不能是提交了很多数据,只有一个数据存到数据库吧?
    我现在没办法把表单的数据set到user里面呀!!
    我的高手还没来到吗?
      

  13.   

    你写一个ActionForm有这么难吗?
      

  14.   

    试试用input不用sturts标签看看
      

  15.   

    谢谢各位!我做出来了。
    UserAction的代码是这样的:package com.bjsxt.bbs.action;import com.bjsxt.bbs.service.UserManager;
    import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{
    private String name ;
    private String password ;
        
        private UserManager um ;
    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 UserManager getUm() {
    return um;
    } public void setUm(UserManager um) {
    this.um = um;
    } @Override
        public String execute()throws Exception{
    User user = new User();
    user.setName(name);
    user.setPassword(password);
    System.out.println(user.getName());
         System.out.println(user.getPassword());
         um = new UserManager();
         if(um.exists(user)){
     
    return "fail";
    }
    um.add(user);
         return "success";
        }
    }  
      

  16.   

    花了我三天时间!!!
    真想把给它给捏碎去!!!!谢谢各位了大侠了!!
    做程序员好痛苦呀!说程序员是农民工还真有点不过份的。
    不过能写出程序来,还是蛮爽的!
    希望能在csdn里面学到更多的知识和得到更多的帮助。结帖了