大数据基础 servlet 第二天

本文详细介绍Servlet的基本概念、请求与响应处理流程、不同请求方式及乱码处理方法,并深入探讨ServletConfig与ServletContext对象的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4/27/2018 8:14:04 AM

Servlet

晨测

1. 编写一个JSON格式的对象
    id=1
    name='张三'
    age=18
    friends=(小丽,18,女)
            (小红,20,女)
            (小刚,19,男) 

2. 简述请求/响应的执行流程

3. 说一说Servlet生命周期

4. 404和500是什么意思

回顾

一、动态网页编程的概念
    HTTP协议
    请求和响应

二、安装Tomcat,软件
    Tomcat 配置文件,修改端口

三、Servlet组件介绍
    接收客户端的请求:HttpServletRequest
    响应处理结果:HttpServletResponse          

    响应结果乱码的处理
    响应结果的状态码    

    生命周期

    HttpServletRequest获取并处理客户端的数据

今日概要

一、HttpServletRequest接口
二、HttpServletReponse接口
三、POST和GET请求方式及其乱码处理
四、ServletContext对象和ServletConfig对象

一、HttpServletRequest接口

内部封装了客户端请求的数据信息
接收客户端的请求参数、HTTP请求数据包中配置参数

<1>常用方法

getContextPath()重要
getContentType()
getMethod()
getRequestURL()
getLocalAddr()
getLocalName()
getRemoteAddr()
getRemoteHost()
getRemotePort()
getQueryString()

<2>获取客户端请求参数

String value = getParameter(String key);
String [] datas = request.getParameterValues(String key);

<3>form表单action设置

1. 直接写Servlet的url名称
    myservlet
2. /项目名称/Servlet的url名称
    /Day14_Servlet/myservlet
3. 全路径
    http://localhost:8090/Day14_Servlet/myservlet

<4>存储数据,具体存储区域的对象,一次请求

将数据存储到request对象中:
    setAttribute(String key,String value);
从request对象中获取数据:
    String value  = getAttribute(String key);
从request对象中移除数据:
    removeAttribute(String key);        

<5>请求的转发

1. 获取转发器对象
    RequestDispatcher rd = request.getRequestDispatcher(String path);

2. 转发操作 (跳转静态资源(DefaultServlet)和servlet)
    request.setAttribute(String key,String value);      
    rd.forward(request,response);

二、HttpServletReponse接口,封装响应数据包的数据

<1>常用方法

setStatus(int code);//设置状态码
addHeader(String key,String value);//设置响应数据包的头部信息   
...
...

<2>自定义重定向

//1. 自定义实现重定向
//设置状态码
    response.setStatus(302);
    response.setHeader("Location", "/Day14_Servlet/code/mainpage.html");
    response.setHeader("Location", "http://www.baidu.com");

//2. 使用response封装好的方法,实现重定向
    response.sendRedirect("/Day14_Servlet/code/mainpage.html");

//3. 定时跳转
    response.setHeader("refresh", "3;url=/Day14_Servlet/code/mainpage.html");

<4>响应字节数据

封装服务器处理的结果  
    getOutputStream();//指向响应数据包的response body部分
    getWriter();//指向响应数据包的response body部分   

三、POST和GET请求方式及其乱码处理

<1>Post和Get请求

常见get请求:
    在地址栏中直接回车
    点击超链接       
    表单提交数据时,指定method=get

get请求:将请求数据放置到url后面(?key=value&key2=value2)
        安全性较低
        对请求数据量有限制,4k

post请求:将请求参数封装到HTTP请求数据包中的请求体中
        安全性较高
        对请求数据量没有限制

<2>请求数据的乱码处理

post处理乱码:
    <1>前端页面的字符编码:
        <meta charset="utf-8">      
    <2>在Servlet中设置HttpServletRequest的解码方式
        request.setCharacterEncoding("UTF-8");      

get处理乱码:
    <1>前端页面的字符编码:
        <meta charset="utf-8">      
    <2>在Servlet中将从HttpServletRequest对象中获取的中文字符重新设置解码字符集
        new String(乱码字符.getBytes("iso-8859-1"),"utf-8");

<3>响应数据乱码处理

1. 响应的结果数据是纯本文数据:response.setCharacterEncoding("utf-8");
    设置当前响应结果的字符集
    不设置会使用当前浏览器默认的字符集进行解码

2. 响应的结果数据是页面数据:response.setContentType("text/html;charset=utf-8");
    //在创建流对象之前设置页面的编码 
    设置当前页面响应结果的字符集

四、ServletContext和ServletConfig对象

<1>概念

当前web应用的上下文对象   
封装该应用的信息,一个web应用只对应唯一的一个ServletContext对象
服务器开启其就被创建,服务器关闭或者web应用被移除,此对象销毁

<2>获取

this.getServletContext();
servletconfig.getServletContext()

<3>作用

1. 获取全局的初始化参数
      <!-- 全局的数据 -->
      <context-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:3306/db1</param-value>
      </context-param>

    在某一个Servlet中:
        创建ServletContext对象
            context = getServletContext();
        获取初始化参数
            context.getInitParameter("key");

2. 存储全局的数据(域对象)
    setAttribute(String key,String value);
    getAttribute(String key);

3. 获取web应用中的任何资源(绝对路径)
    String 绝对路径 = getRealPath("相对路径");

    String imgPath = context.getRealPath("k11.jpg");
    String text3Path = context.getRealPath("WEB-INF/test3.txt");
    String text2Path = context.getRealPath("WEB-INF/classes/test2.txt");

补充:域对象

    一次请求     request     service()             转发 (request)   服务一个用户的一次请求
    一次回话     session     多次请求               服务一个用户的多次请求
    整个web应用  context     整个项目的运行          服务多个用户的多次请求

ServletConfig

描述一个Servlet的配置信息
获取某一个Servlet中配置的初始化数据(web.xml)
        config.getInitParameter(String key);
        config.getServletContext()
        config.getServletName() 

注意:为了保证数据安全,此对象只能获取一次数据

作业

HttpServletRequest   --- HTTP请求数据包
HttpServletResponse  --- HTTP响应数据包
ServletContext       --- 整个WEB应用


宠物管理系统的CRUD
    1. add.html  ----> AddServlet  ---->  DAO 交互 ---->  跳转获取宠物列表QueryServlet  ---->  DAO 交互 ---->  拼写宠物列表页面   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值