Struct2(五)处理表单

简介:

1.表单的提交

表单和对应的Java模型的类

在此次的例子中,我们将会模仿一个用户提交表单的动作,具体提交表单做什么,不关心,我们需要知道 first last Name,Email address ,age。

为了封装这个数据,我们提供一个简单的java Class 来存储这个信息。

Person.java

package org.apache.struts.helloworld.model;
public class Person
{
    private String firstName;
    private String lastName;
    private String email;
    private int age;

    public String getFirstName()
    {
        return firstName;
    }

    public void setFirstName(String firstName)
    {
        this.firstName = firstName;
    }

    public String getLastName()
    {
        return lastName;
    }

    public void setLastName(String lastName)
    {
        this.lastName = lastName;
    }

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge( int age)
    {
        this.age = age;
    }

    public String toString()
    {
        return "First Name: " + getFirstName() + " Last Name:  " + getLastName() +
        " Email:      " + getEmail() + " Age:      " + getAge() ;
    }
}
表单的展示:
      register.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>

<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Register</title>
</head>
<body>
<h3>Register for a prize by completing this form.</h3>
<s:form action="register">
    <s:textfield name="personBean.firstName" label="First name" />
    <s:textfield name="personBean.lastName" label="Last name" />
    <s:textfield name="personBean.email"  label ="Email"/>
    <s:textfield name="personBean.age"  label="Age"  />
<s:submit/>
</s:form>
</body>
</html>

我们使用了标签,则需要添加taglib 命令

表单中定义了Action register,我们需要在structs.xml文件中生命。

<action name="register" class="org.apache.struts.register.action.Register" method="execute">
      <result name="success">/ThankYou.jsp</result>
    </action>

增加注册动作对应的Action

package org.apache.struts.register.action;

import org.apache.struts.model.Person;

import com.opensymphony.xwork2.ActionSupport;

public class Register extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private Person personBean;

    @Override
    public String execute() throws Exception {

        // call Service class to store personBean‘s state in database

        return SUCCESS;

    }

    public Person getPersonBean() {

        return personBean;

    }

    public void setPersonBean(Person person) {

        personBean = person;

    }

}

定义展示的ThankYou.jsp页面:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"     pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Registration Successful</title>
</head>
<body>
<h3>Thank you for registering for a prize.</h3>   <p>Your registration information: <s:property value="personBean" /> </p>   <p><a href="<s:url action=‘index‘ />" >Return to home page</a>.</p>   </body>
</html>

在index.jsp中添加:

<p><a href="register.jsp">Please register</a> for our prize drawing.</p>

能够定位到register.jsp页面。

测试:

1. index.action

2. 点击注册

3.提交

时间: 2024-10-07 10:27:12

Struct2(五)处理表单的相关文章

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

玩转web之json(五)---将表单通过serialize()方法获取的值转成json

form表单有一个serialize()方法,可以序列化表单的值,但是jquery提供的这个方法会把数据序列化为类似下面的形式: a=1&b=2&c=3&d=4 jquery并没有提供将表单数据序列化为json的方法,所以需要我们自己封装一下,下面给出代码和测试样例,先写一个js文件: $.ajaxSetup({ contentType: "application/x-www-form-urlencoded; charset=utf-8" }); var Dat

Struts2的标签库(五)——表单标签

Struts2的标签库(五) --表单标签 几个特殊的表单标签的使用: 1.checkboxlist标签 该标签用于创建多个复选框,用于同时生成多个<input type="checkbox".../>的HTML标签.它根据list属性指定的集合来生成多个复选框.其标签有如下几个属性: list属性:指定要产生复选框的集合: listKey属性:该属性指定集合元素中的某个属性作为复选框的value.当集合为Map时,可以使用Key或者value来指定Map对象中的key或者

html(五) -- 表单标签

表单标签: 表单标签的作用是用于提交数据给服务器的. 表单标签的根标签是<form>标签 常用的属性:    action: 该属性是用于指定提交数据的地址.    method: 指定表单的提交方式.            get : 默认使用的提交方式.  提交的数据会显示在地址栏上.            post :  提交的数据不会显示在地址栏上.注意: 表单项的数据如果需要提交到服务器上面,那么表单项必须要有name的属性值. 代码示例: 1 <!DOCTYPE html&g

bootstrap注意事项(五)表单

1.基本实例 单独的表单控件会被自动赋予一些全局样式.所有设置了 .form-control类的 <input>.<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;. 将 label 元素和前面提到的控件包裹在 .form-group中可以获得最好的排列. <!DOCTYPE HTML><html><head> <link rel="stylesheet" hr

Bootstrap入门(五)表单

先引入本地的CSS文件 <link href="css/bootstrap.min.css" rel="stylesheet"> 一.内联表单 单独的表单控件会被自动赋予一些全局样式.所有设置了 .form-control 类的 <input>.<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;. 而内联表单,要为 <form> 元素添加 .form-inli

2016年5月29日晚上(传智Bootstrap笔记五(表单2))

一.总表单实例 <body style="padding:50px;background-color:#ccc;"> <form class="form-horizontal"> <div class="form-group"> <label for="username" class="col-md-2 control-label">用户名:</labe

HTML笔记(五)表单&lt;form&gt;及其相关元素

表单标签<form> 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中输入信息的元素. 输入标签<input> 输入标签的输入类型由其类型属性type决定.常见的输入类型如下: 文本域Text Field <input type="text" name="inputname" /> 单选按钮Radio Button 注意:只能从中选其中一个. <form> <input type="radio

EasyUI笔记(五)表单

本系列只列出一些常用的属性.事件或方法,具体完整知识请查看API文档 Form(表单) 创建一个简单的HTML表单.构建一个包含id.action和method值的表单元素. <form id="ff" method="post"> <div> <label for="name">Name:</label> <input class="easyui-validatebox"

第五章 表单

表单是最重要也是最复杂的 表单可能是WEB世界里最重要的,通过表单获取用户的输入.另一方面,表单看起来又是简单的,你放置一个input标签,一个submit按钮,然后点击按钮,提交,有什么难的呢? 实践证明,表单确实是很复杂的,理由如下: 表单输入意味着修改服务器与客户端的数据. 改变通常会需要去反映到其他的地方 用户会随意输入不同的值,所以需要校验 如果需要,需要清楚地标明错误 依赖字段具有复杂的逻辑 不依靠DOM选择器,我们不能测试表单 幸运的是,angular2提供了解决这些问题的工具: