zoukankan      html  css  js  c++  java
  • (三)表单与servlet的初步结合

    一、form表单基本使用

    • <form>标签可创建一个表单,属性如下:

    • <form>标签子标签可以有如下:
    1. <input> : 用于搜集用户信息。    

          <input>标签中有很多属性,如下:

              (1)type属性:规定input的类型。type属性有多个值,如下表格:

                  

                (2)name注释:只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。

                (3)maxlength输入字段中的字符的最大长度。

                (4)min输入字段中的字符的最短长度。

                (5)value规定 input 元素的值。

       2.<select>标签: <select>中的子标签 <option>标签用于定义列表中的可用选项。属性如下:

          (1)size属性:规定下拉列表中可见选项的数目。

    如果 size 属性的值大于 1,但是小于列表中选项的总数目,浏览器会显示出滚动条,表示可以查看更多选项。
     
      3.<textarea>:多行文本标签.属性如下:
          (1)cols: 设置文本的列数。
         (2)rows: 设置文本的行数。
     

     1.1 静态页面中的form表单

    <!doctype html>
    <html>
    	<head>
    		<title>表单测试</title>
    		<meta http-equiv="content-type" content="text/html;charset=UTF-8">
    	</head>
    	<body>
    		<form >
    			用户名:<input type="text"  maxlength="8" min="3" value="f"/><br/>    //maxlength设置最大长度,min设置最小长度,value在这里设置默认值即页面加载之后显示在本行的值
               密码:<input type="password" /><br/> 性别:<select size="1" name="sex">                 //设置可见选项的数目 <option >男</option> <option >女</option> </select><br/> 描述:<textarea rows="5" cols="10" > </textarea > <input type="submit"> </form> </body> </html>
    结果:

       1.2 与servlet结合的表单。

    •  表单文件:form.html:

      

    <!doctype html>
    <html>
    	<head>
    		<title>表单测试</title>
    		<meta http-equiv="content-type" content="text/html;charset=UTF-8">
    	</head>
    	<body>
    		<form action="../servlet/form" method="post" >
    			用户名:<input type="text" name="userName" maxlength="8" min="3" value="f"/><br/>
    			密码:<input type="password" name="userPass" /><br/>
    			性别:<select size="1" name="sex">
    					<option value="m">男</option>
    					<option value="f">女</option>
    				</select><br/>
    			描述:<textarea rows="5" cols="10" name="desc">	</textarea >
    			<input type="submit">
    		</form>
    	</body>
    </html>
    

     form.java文件如下:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		response.setCharacterEncoding("utf-8");
    		String name=(String)request.getParameter("userName");
    		String sex=(String)request.getParameter("sex");
    		String desc=(String)request.getParameter("desc");
    		System.out.println(name);
    		System.out.println(sex);
    		System.out.println(desc);
    	}
    

     配置文件如下:

      <servlet>
        <servlet-name>form</servlet-name>
        <servlet-class>servlet.form</servlet-class>      //创建servlet包下的form类的对象,类名是form。 <servlet-class>填写完整的包名。类名    <servlet-name>填写对象的名字。
      </servlet>
      <servlet-mapping>
        <servlet-name>form</servlet-name>
        <url-pattern>/servlet/form</url-pattern>       //所有发送到<url-pattern>路径下的数据都会被form处理,而form在<servlet>要被定义,且<servlet>中的<servlet-name>要与<servlet-mapping>中的<servlet-name>要一致。
      </servlet-mapping>

     解析:1.当用户填好表单并提交之后,数据被发送到action所指向的路径,即action="../servlet/form"(../表示返回上一级目录,./表示当前目录)  当前文件即form.html目录为“localhost:8080/test/study/form.html” 所以action的地址为"localhost:8080/test/servlet/form"   ,查看配置文件中的<url-pattern>可知,当地址为“/servlet/form”(不完整路径,默认基准路径为本目录路径即“localhost:8080/test”),所以数据被发送到form处理。

      2.数据传到了servlet中,request.getParameter("userName")方法用来获取用户填写的值,其中的userName是在表格中的某一个元素的name,例如<input type="password" name="userPass" /> 如果没有定义属性name 那么在servlet中将无法获取这个值更不可能处理了。     

      注意:参数parameter与属性Attribute的区别:

            

          •       来源不同:   参数(parameter)是从客户端(浏览器)中由用户提供的,若是GET方法是从URL中 
            提供的,若是POST方法是从请求体(request body)中提供的; 
              属性(attribute)是服务器端的组件(JSP或者Servlet)利用requst.setAttribute()设置的
          •       操作不同:   参数(parameter)的值只能读取不能修改,读取可以使用request.getParameter()读取; 
              属性(attribute)的值既可以读取亦可以修改,读取可以使用request.setAttribute(),设置可使用request.getAttribute()
          •       数据类型不同:   参数(parameter)不管前台传来的值语义是什么,在服务器获取时都以String类型看待,并且客户端的参数值只能是简单类型的值,不能是复杂类型,比如一个对象。 
               属性(attribute)的值可以是任意一个Object类型。 


  • 相关阅读:
    记一次 contentInsetAdjustmentBehavior 引发的bug
    Android埋点技术概览
    Android开发快速入门iOS开发概览
    工作项目遇到的一些问题
    ruby操作项目.xcodeproj
    关于performSelector afterDelay:0 的使用
    谷歌Python代码风格指南 中文翻译
    最大子矩阵问题--悬线法dp
    tarjan
    SDU CSPT3模拟
  • 原文地址:https://www.cnblogs.com/shyroke/p/6429204.html
Copyright © 2011-2022 走看看