在struts1中使用FormBean获得请求参数
程序员文章站
2022-04-08 19:54:09
...
在jsp页面中,当提交多个请求参数的时候,可以定义一个bean来获取这些参数,struts会将这些请求参数自动天剑到bean中
1.在jsp页面中提交多个请求参数时
<a href="todo.do?username=admin&age=20">goto</a>
2.定义一个javaBean来存放这些请求参数,该javaBean必须继承ActionForm类
public class User extends ActionForm { private static final long serialVersionUID = 1L; private String username; private String age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public static long getSerialversionuid() { return serialVersionUID; } }
3.在struts-config.xml文件中配置使用javaBean来存放请求参数
<!-- 配置bean的集合 --> <form-beans> <!-- 配置form-bean user:formBean的名字,需要和action中的name一致 type:该javaBean的类路径 --> <form-bean name="user" type="com.cong.bean.User"></form-bean> </form-beans> <action-mappings> <!-- 在action中使用name来指定使用该bean来存放请求参数 --> <action name="user" path="/todo" type="com.cong.action.LoginAction"> <forward name="success" path="/WEB-INF/jsp/login/somepage2.jsp" /> </action> </action-mappings>
4.在Action中可以使用user来得到请求参数
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //提交过来的javaBean是一个ActionForm的类型,需要强制转换为需要的类型User User user = (User)form; //输出请求参数 System.out.println(user.getUsername()+","+user.getAge()); return mapping.findForward("success"); }
注意:当在JavaBean中有使用复杂对象的时候,在jsp中的表单提交需要将对象作为属性额前缀命名(eg:user.usernmae),在使用复杂对象的时候,必须要为复杂对象做初始化,因为在struts1中,使用复杂对象时,会调用对象的getter方法获得复杂对象,然后将属性setter到这个复杂对象上,所以getter出来的复杂对象不能未初始化,在struts2中,则是直接生成复杂对象后,在通过对象的setter将整个复杂对象传进去,所以不会出现这样的问题。
在action中使用name的时候,struts1会将name中的bean文件存放到web作用域里面,默认为session,可以使用scope来制定作用域,还可以使用attribute来设置存放到web作用域中的名称,默认与name属性的bean文件一致
上一篇: 3dMax材质应用问题问答小结
下一篇: kafka consumer 配置详解