7:Servlet表单-Java Web

简介: 7:Servlet表单-Java Web

7.1 Servlet响应

通过response对象对用户进行响应

• 创建输出流对象

• PrintWriter out = response.getWriter();

• 使用out对象响应用户

• out.println(“这是通过Servlet响应用户的信息”)


7.2 Servlet获取客户端参数

通过request对象获取请求信息

l String getParameter(String name)

l String[ ] getParamterValues(String name)


• 客户浏览器通过使用以下方法把请求参数传给servlet:

GET(数据量少,安全性要求不高,速度快)

• 以查询字符串的方式附在统一资源地址(URL)后面• 查询串可在客户浏览器上显示

• 默认表单请求方式

• POST(数据量大,安全性要求高)

• 通过单独的套接字连接发送包数据

• 完整的事务对客户是不可见的

• 与GET方法比较起来较慢


doXxx方法

HttpServlet类为每一种HTTP请求方式都定义了一个对应的doXxx方法,例如,与GET请求方式对应的是doGet方法,与POST请求方式对应的是doPost方法。


7.3 Servlet接受表单数据

程序要点:

1、servlet如何获得客户端参数

request.getParameter(参数名);

2、如何解决服务器返回页面中文乱码问题

response.setContentType("text/html;charset=GBK");

3、了解form表单设置action属性时路径问题,相对路径是相对于当前浏览器URL而言的路径。


/表示当前web服务器中web应用程序发布的根目录,对tomcat来说是webapps ,是绝对路径


./当前目录 ,是相对路径


…/表示上一级目录, 是相对路径


注意如果HTML文件放在其他文件夹中时,如何设计action中的路径,


方法一 相对路径: …/ 或者 绝对路径: /上下文根目录 建议使用后者


方法二 也可以考虑修改web.xml中servlet的访问URL,


在web.xml中设置/inputservlet 此/表示当前应用程序根目录。


以后的开发中我们尽量使用绝对路径访问,写绝对路径肯定没有问题,但写相对路径却能会有问题。在后面的学习中会进一步介绍。


4、了解form表单的两种提交方式,get和post方法的区别。


默认是get方式


(1) GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是unicode,即是说所有的非ASCII字符都要编码之后再传输。


POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。

因此,GET请求的数据会暴露在地址栏中,而POST请求则不会,相对而言GET方式的请求会更快。


(2) 传输数据的大小


在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求 时,传输数据会受到URL长度的限制。


对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制。GET方式传递数据量少,POST方式相对而言传递的数据量大。


(3) 安全性


POST的安全性比GET的高。这里的安全是指真正的安全。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露在URL上,因为登录页面有可能被浏览器缓存 以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。


对于数据量少,安全要求不高的请求可以用GET,对于数据量大,安全性要求高的请求用POST方式。


5、了解如何在地址栏里面用get方式传递参数


参数格式设置: URL?参数名1=值&参数名2=值&…


6、让servlet 即能处理get方式请求,又能处理post方式请求


重写父类的doGet()方法,并在doPost()方法中调用doGet()方法


input .html表单页面:

<html>
<head><title>Login</title></head>
<body>
    <form action="InputServlet" method="post">
        请输入内容:<input type="text" name="info">
        <input type="submit" value="提交">
    </form>
</body>
</html>

InputServlet.java 获取参数的Servlet程序

package com.org;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
public class InputServlet extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse resp)
              throws ServletException,IOException{
        resp.setContentType("text/html;charset=UTF-8");//设置服务器给客户端响应的内容类型,指定编码方式解决返回给客户端中文乱码的问题
        req.setCharacterEncoding("UTF-8");//解决Post请求的中文乱码问题
        String info = req.getParameter("info") ;// 假设参数名称为info
        PrintWriter out = resp.getWriter() ;
        out.println("<html>") ;
        out.println("<head><title>表单输入</title></head>") ;
        out.println("<body>") ;
        out.println("<h1>欢迎你" + info + "</h1>") ;
        out.println("</body>") ;
        out.println("</html>") ;
        out.close() ;
    }
    public void doPost(HttpServletRequest req,HttpServletResponse resp)
              throws ServletException,IOException{
        this.doGet(req,resp) ;
    }
}

web2.0中的配置信息

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="https://java.sun.com/xml/ns/javaee"
   xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   version="2.5">
  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
    <servlet>
        <servlet-name>input</servlet-name>
        <servlet-class>com.org.InputServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>input</servlet-name>
        <url-pattern>/InputServlet</url-pattern>
    </servlet-mapping>
</web-app>
目录
相关文章
|
2天前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
10 4
|
1天前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
11 0
WK
|
7天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
10 0
|
1月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
21 1
|
2月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`&lt;select&gt;` 和 `&lt;option&gt;`)、文本域(`&lt;textarea&gt;`)、标签解释(`&lt;label&gt;`)、各类按钮(`&lt;button&gt;`)及表单重置功能、无语义布局标签(`&lt;div&gt;` 和 `&lt;span&gt;`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
28天前
|
Java 应用服务中间件 Spring
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
21 0
|
2月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】02 表单-input标签-单选框-多选框
本文介绍了HTML中`&lt;input&gt;`标签的基本使用方法及其应用场景,如登录、注册页面和搜索区域。通过设置`type`属性,可以实现文本框、密码框、单选框、多选框及文件上传等功能。此外,还详细说明了占位文本的使用、单选框的常用属性及多选框的默认选中状态,并提供了示例代码与效果展示。
|
2月前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
2月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
52 0
|
3月前
|
C# 数据可视化 开发者
WPF开发者福音:深度解析OxyPlot与LiveCharts图表库,轻松实现数据可视化不再是难题!
【8月更文挑战第31天】在WPF应用中,数据可视化对提升用户体验至关重要。本文介绍并演示了两种流行图表库OxyPlot和LiveCharts的集成与使用方法。OxyPlot是一款适用于.NET应用的开源图表库,提供多种图表类型,易于集成。LiveCharts则以其丰富的图表类型和动画效果,特别适合实时数据展示。通过具体代码示例,本文展示了如何利用这两种图表库创建折线图和柱状图,并详细说明了安装和配置步骤。希望本文能帮助开发者在WPF应用中轻松实现高效、美观的数据可视化。
164 0