大侠、高手请进!!

hfei99999 2012-06-26 09:05:51
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”。有谁可以帮帮小弟呀!!搞了两天还没明白。
...全文
174 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
谢谢各位!我做出来了。
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";
}
}
zyj329480985 2012-06-26
  • 打赏
  • 举报
回复
试试用input不用sturts标签看看
EverWHL 2012-06-26
  • 打赏
  • 举报
回复
你写一个ActionForm有这么难吗?
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
应该是user没有实例化不能set
[/Quote]
user实例化了,set的话,只能set一个呀。我的index.jsp页面的form表单可是要提交很多数据的呀,不能是提交了很多数据,只有一个数据存到数据库吧?
我现在没办法把表单的数据set到user里面呀!!
我的高手还没来到吗?
drogenflynet 2012-06-26
  • 打赏
  • 举报
回复
不用 new User 直接把user 弄成属性然后 获取表单值 调用setters方法 就行了 不用你new 框架有动态代理和依赖注入帮你弄了
a-shitou 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
引用 7 楼 的回复:
action中只要有private User user 和它的get、set方法就可以直接获取到前台传过来的值,不用new对象,struts内部会进行处理

不用new。我把UserAction类中execute方法里面的“
user=new User();
um =new UserManager()
user.setName("b");
user.setPa……
[/Quote]
应该是user没有实例化不能set
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
action中只要有private User user 和它的get、set方法就可以直接获取到前台传过来的值,不用new对象,struts内部会进行处理
[/Quote]
不用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)错误。
大侠们,加油加油呀!!!
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
struts2 的Action有bean对象,jsp使用struts标签,ognl可以直接获取bean中的属性或方法!
[/Quote]
我把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>
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
action中只要有private User user 和它的get、set方法就可以直接获取到前台传过来的值,不用new对象,struts内部会进行处理
[/Quote]
我的UserAction里面有有private User user 和它的get、set方法,可是前台每次都不能传值过来。
把UserAction类中execute方法里面的“user.setName("b");user.setPassword("b")”;去掉,传过来的都是Null。
JavaMan 2012-06-26
  • 打赏
  • 举报
回复
struts2 的Action有bean对象,jsp使用struts标签,ognl可以直接获取bean中的属性或方法!
Everliang 2012-06-26
  • 打赏
  • 举报
回复
//有ActionForm没有,没有新建一个ActionForm 里面放实体类 get set 方法 然后在Action里用
user =  ActionForm.getUser()//这个就是你页面上的user对象
statichu2 2012-06-26
  • 打赏
  • 举报
回复
action中只要有private User user 和它的get、set方法就可以直接获取到前台传过来的值,不用new对象,struts内部会进行处理
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
楼主,建议好好下个strutsApi好好学习一下吧,直接在action类中获取user对象不就行了
干嘛要new 一个user啊 直接获取页面上的user 在set进去不就行了
[/Quote]
能帮忙写一下吗?我在网上找了两天没找到,只知道struts有三种接收参数的方式,好像用不上呀!
Everliang 2012-06-26
  • 打赏
  • 举报
回复
楼主,建议好好下个strutsApi好好学习一下吧,直接在action类中获取user对象不就行了
干嘛要new 一个user啊 直接获取页面上的user 在set进去不就行了
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
user.setName("b");
user.setPassword("b");
你自己设死了这个值当然不会变啦
[/Quote]
所以我就想,怎么把输入表单的内容设置到user的name、password里面去。
我就是没法把输入表单的内容设置到user的name、password里面去,所以请大侠、高手帮忙咯!!!
hugo000002020 2012-06-26
  • 打赏
  • 举报
回复
user.setName("b");
user.setPassword("b");
你自己设死了这个值当然不会变啦
statichu2 2012-06-26
  • 打赏
  • 举报
回复
你想问什么?
hfei99999 2012-06-26
  • 打赏
  • 举报
回复
花了我三天时间!!!
真想把给它给捏碎去!!!!

谢谢各位了大侠了!!
做程序员好痛苦呀!说程序员是农民工还真有点不过份的。
不过能写出程序来,还是蛮爽的!
希望能在csdn里面学到更多的知识和得到更多的帮助。

结帖了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧