初学Struts时,表单传值,当一个jsp写好后,从Action中得到的始终是null。不明白是什么原因?
ActionForm代码:
package edu.swu.hyc.form;
import org.apache.struts.action.ActionForm;
public class UserInfoActionForm extends ActionForm {
private String age;
private String name;
private String profession;
private String sex;
/**
* @return the age
*/
public String getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(String age) {
this.age = age;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the profession
*/
public String getProfession() {
return profession;
}
/**
* @param profession the profession to set
*/
public void setProfession(String profession) {
this.profession = profession;
}
/**
* @return the sex
*/
public String getSex() {
return sex;
}
/**
* @param sex the sex to set
*/
public void setSex(String sex) {
this.sex = sex;
}
}
Action代码:
package edu.swu.hyc.form;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class UserInfoAction extends Action {
private final String dbDriver = "com.mysql.jdbc.Driver";
private final String url = "jdbc:mysql://localhost:3306/test";
private final String user = "root";
private final String password = "root";
private Connection con = null;
public UserInfoAction(){
try {
Class.forName(dbDriver).newInstance();
con = DriverManager.getConnection(url, user, password);
con.setAutoCommit(true);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean executeUpdate(UserInfoActionForm form){
String sql = "insert into user values(?,?,?,?)";
PreparedStatement pst;
try {
pst = con.prepareStatement(sql);
pst.setString(1, form.getName());
pst.setString(2, form.getAge());
pst.setString(3, form.getSex());
pst.setString(4, form.getProfession());
pst.executeUpdate();
con.close();
pst.close();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
/* (non-Javadoc)
* @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
System.out.println("---------------------------------");
UserInfoActionForm userInfoActionForm = (UserInfoActionForm)form;
userInfoActionForm.setName(userInfoActionForm.getName());
userInfoActionForm.setAge(userInfoActionForm.getAge());
userInfoActionForm.setSex(userInfoActionForm.getSex());
userInfoActionForm.setProfession(userInfoActionForm.getProfession());
String message = "添加用户失败";
if (executeUpdate(userInfoActionForm)){
message = "添加用户成功";
}
request.setAttribute("messger", message);
con.close();
return mapping.findForward("insertUserInfo");
}
}
Jsp代码:
<body>
<form name="form" method="post" action="UserInfoAction.do" onsubmit="return mycheck()">
<table width="481" border="0" align="center">
<tr>
<td width="60" height="30">姓名</td>
<td width="166" height="30"><input type="text" name="name" /></td>
<td width="60" height="30">年龄</td>
<td width="166" height="30"><input type="text" name="age" /></td>
</tr>
<tr>
<td width="60" height="30">性别</td>
<td width="166" height="30"><input type="text" name="sex" /></td>
<td width="60" height="30">职业</td>
<td width="166" height="30"><input type="text" name="profession" /></td>
</tr>
</table>
<br/>
<div align="center">
<input type="submit" name="submint" value="添加"/>
</div>
</form>
<%
if(request.getAttribute("messger") != null)
out.println(request.getAttribute("messger"));
%>
</body>
Struts-Config代码:
<form-beans>
<form-bean name="userInfoActionForm" type="edu.swu.hyc.form.UserInfoActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/userInfoAction" name="userInfoAction" scope="request" type="edu.swu.edu.hyc.form.UserInfoAction"
validate="true">
<forward name="inserUserInfo" path="/index.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="ApplicationResources"></message-resources>
这个是插入到MysqL中,但从Action中得到的Form值为null,不明白是为什么?Mysql是配置成功了的。求解答,谢谢~~~
分享到:
相关推荐
### Struts2 传值方式详解 在Struts2框架中,实现前后台的数据传递是构建Web应用的基础之一。本文将详细介绍三种常见的Struts2数据传递方式:通过默认的Action属性传递、使用Value Object(VO)传递以及利用...
1. **Action属性传值** Struts2的核心是Action类,每个Action类都代表一个特定的业务逻辑。我们可以通过在Action类中定义公共属性,然后在JSP页面中使用`<s:textfield>`等标签将表单数据绑定到这些属性上。当用户...
使用struts2表单传值,可以传一个或者是作为一个对象的各个属性传,都非常灵活便捷。但是如果我们需要传一个数组并希望struts正确接收,该怎么处理呢? 下面我将通过普通表单和ajax两种方式讲解。首先我们有如下一个...
在Java Web开发中,页面传值是不可或缺的一部分,主要用于用户在网页上填写信息后提交...在实际项目中,通常会结合Model-View-Controller(MVC)架构,使用框架如Spring MVC或Struts来更高效地管理页面传值和业务逻辑。
由于中文字符在UTF-8编码和ISO-8859-1编码之间的转换差异,很容易在数据传输过程中出现乱码问题。本文将详细探讨如何在Struts2框架中通过JSON传值解决乱码问题的方法,涉及JavaScript编码和Java解码的相关操作技巧。...
"struts2.0-1基本入门.doc"和"Struts2.0的各种配置详解.doc"将详细介绍如何在struts.xml文件中配置Action、Result和Interceptor。Action配置包括指定Action类、方法和映射URL,Result则定义了请求成功后的跳转路径,...
Struts2表单标签的应用实例。 主要功能是在一个页面提交个人信息之后跳转到另一个页面显示之前所提交的个人信息。具体介绍和功能演示请移步我的博客: http://blog.csdn.net/qq_33171970/article/details/51380991
1. **所有备选项** (`allCheckboxBeans`):这是一个包含所有可能选项的列表。 2. **已选中项** (`checkboxBeans`):这是一个包含用户已经选择的项的列表。 这些数据通常由后端逻辑填充,并通过模型传递给视图层。 ...
Struts框架需要配置相关的`Action`和表单bean,如下所示: ```xml <struts-config> <data-sources/> <form-beans> <form-bean name="loginForm" type="org.viman.struts.form.LoginForm"/> </form-beans> ...
### Struts2框架中Action间传值方法详解 在Struts2框架中,Action类是处理用户请求的核心组件,它们负责执行具体的业务逻辑,并决定视图的转向。在某些情况下,我们可能需要在一个Action处理完成后将某些数据传递给...
1. 栈顶对象:在程序执行过程中,由容器自动创建并存储到值栈中,该对象仅在Action使用模型驱动方式传值时被用到。 2. Action对象:每个Action请求到来时,容器会创建一个Action对象并存入值栈,该对象携带所有与...
1. **JSP页面设置** 在JSP头部声明字符集: ```jsp ;charset=UTF-8" language="java" %> ``` 这样可以确保JSP页面的输出使用UTF-8编码。 2. **HTTP请求设置** 如果是通过表单提交,需要在`<form>`标签中指定`...
在Struts2中,经常需要将表单数据传递给Action处理。最简单的做法是使用`<input>`标签,例如: ```html ``` 这里的`name`属性表示传递给Action的参数名称。需要注意的是,为了能够正确接收到此参数,对应的Action类...
1. **文件上传**:Struts2提供了一套完整的文件上传机制,允许用户通过表单上传文件。这涉及到`CommonsFileUpload`库的使用,以及在Action类中定义接收文件的属性,并配置相应的拦截器来处理文件上传请求。 2. **...
if (flag == -1) { result += obj.value + "#"; } else { result = result.substring(0, flag) + result.substring(flag + 1 + obj.value.length); } } ``` 这里,`result`字符串以`#`为分隔符,每次勾选新的复...
通过实现ModelDriven接口,开发者可以将模型对象直接绑定到Action类,这样在表单提交后,Struts2会自动将请求参数映射到模型对象的属性上,减少了手动设置属性的繁琐工作。 首先,我们需要了解ModelDriven接口的...
Struts2 是一款基于 MVC 设计模式的 Java Web 开发框架,它简化了Java应用程序的开发流程,尤其是在处理表单和页面展示方面。Struts2 提供了一系列丰富的标签库,使得开发者能够方便地在 JSP 页面中实现各种功能。...
3. **往对象中传值`<s:textfield>`**:此标签允许将表单字段的值直接绑定到Action中的对象属性,例如`<s:textfield name="user.userName" id="username" />`,这表示将值传递给Action中名为`user`的对象的`userName`...
1. **Action之间的传值方案** - **方案一:Chain(链式调用)** Chain结果类型允许一个Action直接将控制权交给另一个Action,而无需重新发起HTTP请求。这种方式适用于Action之间需要共享数据的情况。例如,在`do....