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>
目录
相关文章
|
7天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
|
7天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
|
7天前
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
|
7天前
|
缓存 负载均衡 安全
Servlet与JSP在Java Web应用中的性能调优策略
【6月更文挑战第23天】在Java Web中,Servlet和JSP调优至关重要,以应对高并发和复杂业务带来的性能挑战。优化包括Servlet复用、线程安全、数据库连接池,以及JSP的编译优化、使用JSTL、页面缓存和静态内容分离。全局优化涉及负载均衡、异步处理和缓存策略。通过这些实践,开发者能提升应用响应速度和吞吐量,确保高负载下的稳定运行。
|
2天前
|
缓存 Java 测试技术
Java中的Web服务开发与优化技巧
Java中的Web服务开发与优化技巧
|
4天前
|
安全 Java 测试技术
开发Java RESTful Web服务的技巧
开发Java RESTful Web服务的技巧
|
5天前
|
Java 机器人 数据库
Java中的Servlet编程:从基础到高级应用
Java中的Servlet编程:从基础到高级应用
|
4天前
|
JavaScript 程序员 应用服务中间件
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(2)
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(2)
17 7
|
4天前
|
JSON 前端开发 Java
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
21 6
|
4天前
|
XML 存储 JavaScript
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(1)
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(1)
15 5