前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaWeb入门之Servlet基础2

JavaWeb入门之Servlet基础2

原创
作者头像
黄桂期
修改2018-05-14 21:35:33
1.2K4
修改2018-05-14 21:35:33
举报
文章被收录于专栏:土豆专栏土豆专栏

写给还是小白的我们,一起加油哇~

开始之前,让我先来介绍一下HTTP协议(hypetext transfer protocol 超文本传输协议),是TCP/IP协议集中的一个应用层协议,用于定于WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。

HTTP会话方式:

浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应,对每一个页面的访问,浏览器与WEB服务器都要建一次单独的连接。

浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。

那么在这里就不得不讲一下最常用的HTTP的两个请求方式GETPOST了:

使用GET方式传递参数:

  • 在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET
  • 如果网页中的<form>表单元素属性被设置为“GET”,浏览器提交的FORM表单时生成的HTTP请求消息的请求方式也为GET
  • 使用GET请求方式给WEB服务器传递参数的格式:

http://localhost:8080/Day0511/loginServlet?user=vmh&password=gm&interesting=reading

使用POST方式传递参数:

  • POST请求方式主要用于向WEB服务器端程序提交FORM表单中的数据:FORM表单的method设置为POST
  • POST方式将各个表单字段元素及其数据作为HTTP消息的实体内容发送给WEB服务器
  • 使用POST请求方式给WEB服务器传递参数的格式:

http://localhost:8080/Day0511/loginServlet

以下为它们之间的区别:

  • post请求是通过数据包的形式发送参数,get是通过地址栏传递参数
  • get在地址栏中可以看见参数值,post不可以
  • get请求参数是有长度上限的,post理论上没有上限

那么接下来可以讲述如何在Servlet中获取请求信息了:

Servlet有一个service()方法可用于应答请求(每次请求都会调用这个问题)

然后我们要做的就是新建一个html页面(哈哈哈这里就比较简单啦):

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="loginServlet" method="post">
        user:<input type="text" name="user"/><br>
        password:<input type="password" name="password"/>
        <br><br>
        interesting:<input type="checkbox" name="interesting" value="reading"/>reading
                    <input type="checkbox" name="interesting" value="singing"/>singing
                    <input type="checkbox" name="interesting" value="party"/>party
                    <input type="checkbox" name="interesting" value="shopping"/>shopping
        <input type="submit" value="Submit"/>
    </form>
</body>
</html>

然后新建一个loginServlet,可以看到在service方法中有两个参数ServletRequestServletResponse

  • ServletRequest:封装了请求信息,可以从中获取任何的请求信息
  • ServletResponse:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现。这两个接口的实现都是服务器给予实现的,并在服务器调用Service方法实现
  • HttpServletRequest: 是ServletRequest的子接口,针对与HTTP请求所定义,里面包含了大量获取HTTP请求相关的方法
  • HttpServletResponse:代表服务器的响应,这个对象中封装了向客户端发送数据,发送响应头还有响应头状态码的方法

以下为几个常用方法:

代码语言:javascript
复制
    @Override
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("request coming");
        System.out.println(request);
        //根据参数名返回参数值
        String user=request.getParameter("user");
        String password=request.getParameter("password");
        System.out.println("user:"+user+"   password"+password);
        //根据请求参数的名字,返回请求参数对应的字符串数组
        String [] interesting =request.getParameterValues("interesting");
        if(interesting.length>0){
            for(String interest:interesting){
                System.out.println("interesting:"+interest);
            }
        }
        //返回参数对应的Enumeration
        Enumeration<String> names=request.getParameterNames();
        while(names.hasMoreElements()){
            String name=names.nextElement();
            String val=request.getParameter(name);
            System.out.println("name:  "+name+"  value:  "+val);
        }
        //返回请求参数的键值对
        Map<String,String[]> map=request.getParameterMap();
        for(Map.Entry<String, String[]> entry:map.entrySet()){
            System.out.println("key: "+entry.getKey()+"   value: "+Arrays.asList(entry.getValue()));
        }
        //获取请求URI
        HttpServletRequest httpServletRequest=(HttpServletRequest) request;
        String requestURI=httpServletRequest.getRequestURI();
        System.out.println(requestURI);
        //获取请求方式
        String method=httpServletRequest.getMethod();
        System.out.println("method:"+method);
        //返回请求方式后的字符串
        String queryString=httpServletRequest.getQueryString();
        System.out.println(queryString);
        //返回映射的Servlet路径
        String servletPath=httpServletRequest.getServletPath();
        System.out.println(servletPath);
        //设置响应内容类型
        response.setContentType("application/msword");
        //将print中的参数打印到浏览器上
        PrintWriter out=response.getWriter();
        out.print("response");
        
    }

Servlet还有很多东西需要学习,今天就先讲一部分,未完待续~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com