一、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类型。

(三)表单与servlet的初步结合的更多相关文章

  1. 简单的form表单操作(Servlet)

    Servlet模型 [表单的处理][模型(1)] ●HTML网页 <!DOCTYPE html> <html> <head> <meta charset=&q ...

  2. jsp文件放在webcontent子目录下提交表单给servlet报404错误解决办法

    新版的web项目已经不需要配置web.xml了,并且eclipse neon版本里面新建web项目时候,默认不会生成web.xml文件.我们也不需要手动添加该文件,因为内部为我们提供了最新的处理方式, ...

  3. 【IDEA】HTML通过servlet3.0注解名提交表单到servlet类找不到页面的问题

    IDEA一时爽,摸不着头的BUG火葬场 这个问题困扰我整整一天一夜,先是代码检查路径设置找不出问题,后面换tomcat版不行,抱着侥幸心理换IDEA版本意料之中还是没解决问题. 都快想秃了最后终于完美 ...

  4. html提交表单到Servlet

    源码地址 https://github.com/YouXianMing/Java-Web-Study/tree/master/Servlet-Form 演示效果(注意post与get提交方式浏览器地址 ...

  5. 最适合入门的Laravel中级教程(三)表单验证

    做开发有个原则是永远不能信任用户输入的数据: 即便前端已经做了验证: 在后端 php 也必须要再次验证: laravel 为表单验证提供了强大且简单的方案: 创建示例路由: routes/web.ph ...

  6. Servlet与JSP内置对象的对应关系、Servlet获取表单、Servlet路径跳转

    项目的根目录指的是webroot: 服务器内部跳转: 或者使用../:“..”代表回到上一级目录

  7. Servlet表单数据处理

    以下内容引用自http://wiki.jikexueyuan.com/project/servlet/form-data.html: 当需要从浏览器到Web服务器传递一些信息并最终传回到后台程序时,一 ...

  8. Servlet中转发和重定向的路径问题以及表单提交路径问题

    一.请求转发与响应重定向的种类 有两种方式获得Servlet转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher() ...

  9. html文件form表单action调用servlet连接mysql数据库实例

    web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...

随机推荐

  1. dt7.0百度熊掌当天主动推送方法

    因自己没事新做了一个网站,申请了一个熊掌号,所以做了这个主动推送接口,希望能收录快些,在此分享下关于DT7.0主动当天推送功能 上代码: <?php /* 百度当天主动推送熊掌功能 作者:68喜 ...

  2. Python经典算法-猴子吃桃-思路分析

    问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个.第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个.以后每天都吃前一天剩下的一半再加一个.到第10天刚好剩一个.问猴子第一天 ...

  3. NetworkX系列教程(10)-算法之四:拓扑排序与最大流问题

    小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...

  4. 新路由3newifi3路由器刷机newifi3breed解锁小白刷机教程路由器刷breed老毛子Padavan固件

    路由刷机围观33696次5条评论日期:2018-11-23字体:大中小   此教程只针对新三路由器小白玩家,大神勿喷,非常详细. 先说一下,本人2018年11月22日新入手了个新三路由器,收到货晚上8 ...

  5. SSH dao层异常 org.hibernate.HibernateException: No Session found for current thread

    解决方法: 在 接口方法中添加 事务注解 即可. public interface IBase<PK extends Serializable, T> { @Transactional v ...

  6. PowerShell中汉字与ASCII码相互转换

    function asc($param) { $rtn = '' $list = $param -split '' foreach ($char in $list) { if($char -ne '' ...

  7. codeforces524E

    题意:n*m的矩阵,给出k个点,Q次询问,问每个矩阵中每个点是否被看管,一个点被看管的定义是那个点所在的行或列有点,n,m<=1e5,k,q<=2e5 sol :发现行和列是独立的,即要么 ...

  8. Tkinter 之主窗口参数

    一.常用参数 语法 作用 window= tk.TK() 创建窗口 window['height'] = 300 设置高 window['width'] = 500 设置宽 window.title( ...

  9. [WEB安全]Dirsearch工具命令

    下载项目,并打开 ┌─[root@kali]─[/kali] └──╼ #git clone https://github.com/maurosoria/dirsearch ┌─[root@kali] ...

  10. C# 控制反转

    主要目的:需要在业务逻辑层调用UI的弹框提示信息代码是在记事本中写的,没有运行调试过,不保证能直接使用,看下思路就好 //接口public interface IShowData { void Sho ...