7:Servlet表单-Java Web

目录

  • 7.1 Servlet响应
  • 7.2 Servlet获取客户端参数
  • 7.3 Servlet接受表单数据

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("") ;
        out.println("表单输入") ;
        out.println("") ;
        out.println("

欢迎你" + info + "

"
) ; out.println("") ; out.println("") ; 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>

你可能感兴趣的:(Java,Web,servlet,java,前端,1024程序员节)