Servlet进阶2

请求对象 request

      获取请求消息

  设置通用编码格式 ,get方法时,不需要

  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");

//获取根目录的真实路径

String realPath = this.getServletContext().getRealPath("/");

//获取请求方式

 String method = request.getMethod();//get或者post

//获取客户端和服务端的端口号

 int remotePort = request.getRemotePort();
  int localPort = request.getLocalPort();
  System.out.println(remotePort+"-----"+localPort);//13868-----8090

获取编码格式

 String encoding = request.getCharacterEncoding();

//获取项目名

 String contextPath = request.getContextPath();      /MyServletDemo2

//获取协议号

 String protocol = request.getProtocol();  //HTTP/1.1

//获取请求参数

 String queryString = request.getQueryString();  //username=1234&password=1234(get方法的方式)

需要注意get和post方法获取请求参数的方式不同

   String readLine = request.getReader().readLine(); (post方法)

获取统一资源标识符和同意资源定位符

 String requestURI = request.getRequestURI();   //MyServletDemo2/demo5
  StringBuffer requestURL = request.getRequestURL();  //http://localhost:8090/MyServletDemo2/demo5


获取请求头:
   request.getHeader("user-agent");//获取请求头的值
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
   request.getDateHeader(name);//获取日期头
3.获取请求体: 请求体:专门用于封装Post请求的 请求参数
  获取字符数据: getReader(); 返回一个高效的字符流 我们通过一次读取一行的 方法来获取请求参数数据  然后 拆分字符串获取我们想要的数据
4. 通用的方式来获取 请求参数
 1.  request.getParameter(name);  通过请求参数的名称来获取值
   String parameter = request.getParameter("username");
//   System.out.println(parameter);
  2  .request.getParameterValues("hobby"); 通过请求参数的名称,来获取值的数组 一般用于复选框
   Set<String> keySet = parameterMap.keySet();
  for(String key:keySet){
   String[] value = parameterMap.get(key);
   for(String s :value){
    
    System.out.println(key+"="+s);
   }
   3.request.getParameterMap();  获取所有参数的map集合
  Map<String, String[]> parameterMap = request.getParameterMap();
  Set<String> keySet = parameterMap.keySet();
  for(String key:keySet){
   String[] value = parameterMap.get(key);
   for(String s :value){
    
    System.out.println(key+"="+s);
   }
  }
   4.request.getParameterNames(); 获取所有参数的名称 枚举 不常用 了解   //复选框的时候,name取不同给的,否则只能拿到第一个
Enumeration<String> names = request.getParameterNames();
  while (names.hasMoreElements()) {
   String nextElement = names.nextElement();
   String parameter = request.getParameter(nextElement);
   System.out.println(nextElement+"="+parameter);
  }
 5.请求转发:
   转发的特点:
   1.一次请求一次响应
   2.地址栏不发生变化
   3.只能访问内部站点资源
  代码:
   request.getRequestDispatcher("/myservlet2").forward(request, response);
  6.域对象: 请求域的范围中共享数据
  在一次请求的多个资源之间共享数据
    request.setAttribute("name","zhangsan");
    request.getAttribute("name");
    request.removeAttribute("name");
  什么时候使用重定向?什么时候使用转发?
   1.如果需要在请求的多个资源中共享数据,则使用重定向
   2.如一次性的数据存入请求域中
 
7.路径的书写:
  建议以/开头
  服务器内部跳转路径 不需要加项目名称  request.getRequestDispatcher("/demo2").forward(request, response);
  页面上的路径和重定向 需要加上 项目名称
  <img src="/MyServlet/mydemo4" id="img1"></img>
  
  
  一般来说我们写相对路径

8. 重定向和转发的区别
转发是服务器行为,重定向是客户端行为
重定向:(1)两次请求两次转发
        (2)跳转地址
        (3)可以访问网内和网外资源
转发:   (1)一次请求一次转发
        (2)不跳转地址
         (3)网内资源
流程:
重定向:发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器 
转发发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器 
 

使用方法:重定向与请求转发使用

前后两个页面 有数据传递 用请求转发,没有则用重定向。
比如servlet查询了数据需要在页面显示,就用请求转发。
比如servlet做了update操作跳转到其他页面,就用重定向。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值