servlet对象servletConfig_servletcontext_request_response

本文详细介绍了ServletConfig、ServletContext、ServletResponse及ServletRequest等核心接口的功能与使用方法,包括配置信息获取、资源共享、请求转发与重定向等关键操作。

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

一、ServletConfig
1.代表当前Servlet的web.xml中的配置信息
           ServletConfig conf = this.getServletConfig();
2.获取Servlet的名字
             getServletName()
3.获取Servlet中配置的Servlet初始化参数
             web里构建参数:
             在servlet标签下
             <init-param>
          <param-name>name</param-name>
          <param-value>nameValue</param-value>
              </init-param>
             getInitParameter("")
4.获取ServletContext对象
             getServletContext()
二、ServletContext
代表当前web应用
在服务器启动,web应用被加载后立即创建代表当前web应用的ServletContext对象,此对象一直驻留在内存中,直到web应用被移除出容器,或服务器关闭时,webServletContext对        象随着web应用的销毁而销毁
config.getServletContext();
this.getServletContext();

1.作为域对象在整个web应用范围内共享数据
作用范围:整个web应用范围
生命周期:随着web应用启动而创建,随着web应用的销毁而销毁
this.getServletContext().setAttribute("param1", "avb");有缓存问题,要刷新。
在任何servlet里设置属性,在另外一个servlet里就能获取
context.getAttribute("param1") 
2.获取整个web应用的初始化参数
                在web-app标签下:
                <context-param>
 <param-name>param1</param-name>
 <param-value>value1</param-value>
                </context-param>
    
context.getInitParameter("");

3.实现Servlet的转发。
//获取转发器 RequestDispatcher
this.getServletContext().getRequestDispatcher("/servlet/Demo3Servlet").forward(request, response);
4.获取资源
this.getServletContext().getRealPath("/1.txt")//---在传入的路径前拼接当前web应用的硬盘路径,返回的就是需要的资源的硬盘路径
*5.利用类加载器读取资源
    String path = Demo4.class.getClassLoader().getResource                      ("config.properties").getPath();
    找该类的加载开始路径就是WebRoot目录下classes目录开始

三、ServletResponse  -- HttpServletResponse
1.向浏览器输出一段数据
输出数据时的乱码问题原理,解决方案
           1)字节输出流
            设置浏览器打开的编码
            response.setHeader("Content-Type", "text/html;charset=utf-8");
            设置输入时的字节编码
   response.getOutputStream().write("中国".getBytes("utf-8"));
           2)字符输出流
            /*response.setCharacterEncoding("uft-8");
response.setHeader("Content-Type", "text/html;charset=utf-8");*/
                 下面的方法代替上面方法:
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("中国");
2.控制浏览器定时刷新(3秒后回到主页)
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;utf-8");
response.getWriter().write("恭喜您注册成功!3秒后自动跳转到主页!如果没有自动跳转,<a href='"+request.getContextPath() +"/index.jsp'>点这里</a>");
response.setHeader("refresh", "3;url="+request.getContextPath() +"/index.jsp");
3.控制浏览器是否缓存资源
response.setDateHeader("Expires", System.currentTimeMillis()+1000L*3600*24*30);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("pragma", "no-cache");
response.getWriter().write(new Date().toLocaleString());
               
4.实现请求重定向
/*response.setStatus(302);
response.setHeader("Location", "/day04/index.jsp");*/
                请求重定向用下面方法:
response.sendRedirect("/day04/index.jsp");
如果给浏览器看的要写/项目名
服务器程序不用写/项目名
*请求重定向和请求转发
他们都可以实现访问资源的跳转过程
请求转发:一次请求一次响应,地址栏不发生变化,转发之前和转发之后是同一个request、response
请求重定向:两次请求两次响应。地址栏发生变化,重定向之前和重定向之后的是两个不同的request两个不同的response

通常情况下都是用请求转发。减少对服务器的访问次数,减少服务器的压力。可以在请求转发的过程中利用request对象带参数。
如果希望地址栏发生变化时用请求重定向。
5.response身上的getOutputStream和getWriter是互斥的调用了其中一个就不能再调用另外一个了。
response身上获取的OutputStream和Writer会在Servic方法结束后由服务器关闭,我们就不用关了。
6.验证码
四、ServletRequest -- HttpServletRequest
1.获取客户机信息
getRequestURL方法返回客户端发出请求完整URL
getRequestURI方法返回请求行中的资源名部分
getQueryString 方法返回请求行中的参数部分
getRemoteAddr方法返回发出请求的客户机的IP地址
getMethod得到客户机请求方式
getContextPath 获得当前web应用虚拟目录名称
2.获取请求头信息
getHeader(name)方法 --- String 
getHeaders(String name)方法 --- Enumeration<String>
getHeaderNames方法 --- Enumeration<String>
getIntHeader(name)方法  --- int
getDateHeader(name)方法 --- long(日期对应毫秒)
3.获取请求参数
      
                1)getParameter(name) --- String 通过name获得值
                2)getParameterValues  --- String[ ] 通过name获得多值 checkbox
3)getParameterNames  --- Enumeration<String> 获得所有name
4)getParameterMap  --- Map<String,String[ ]> key :name value: 

5)对于获取请求参数时的乱码:
如果是POST提交,只要设置request.setCharacterEncoding("xxxx");就可以解决
但是如上的方法只对请求中实体内容中的部分起作用,由于get提交方式提交的请求参数时在URL后面带过来的,所以上面的方法不能解决get乱码
对于get方式提交的请求参数中的乱码需要我们手动的编解码解决:
value = new String(value.getBytes("iso8859-1"),"utf-8");
4.利用请求域传递对象





内容概要:本文深入解析了扣子COZE AI编程及其详细应用代码案例,旨在帮助读者理解新一代低门槛智能体开发范式。文章从五个维度展开:关键概念、核心技巧、典型应用场景、详细代码案例分析以及未来发展趋势。首先介绍了扣子COZE的核心概念,如Bot、Workflow、Plugin、Memory和Knowledge。接着分享了意图识别、函数调用链、动态Prompt、渐进式发布及监控可观测等核心技巧。然后列举了企业内部智能客服、电商导购助手、教育领域AI助教和金融行业合规质检等应用场景。最后,通过构建“会议纪要智能助手”的详细代码案例,展示了从需求描述、技术方案、Workflow节点拆解到调试与上线的全过程,并展望了多智能体协作、本地私有部署、Agent2Agent协议、边缘计算插件和实时RAG等未来发展方向。; 适合人群:对AI编程感兴趣的开发者,尤其是希望快速落地AI产品的技术人员。; 使用场景及目标:①学习如何使用扣子COZE构建生产级智能体;②掌握智能体实例、自动化流程、扩展能力和知识库的使用方法;③通过实际案例理解如何实现会议纪要智能助手的功能,包括触发器设置、下载节点、LLM节点Prompt设计、Code节点处理和邮件节点配置。; 阅读建议:本文不仅提供了理论知识,还包含了详细的代码案例,建议读者结合实际业务需求进行实践,逐步掌握扣子COZE的各项功能,并关注其未来的发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值