原理图:

之一--------->servletConfig

有些时候,有些参数不适合写死,而且初始化servlet要用,可以通过这个头来调用servletConfig

例如:serlet数据库的配置信息,servlet采用什么码表(utf-8),servlet配置文件是哪个

在web.xml中修改成如下:

在servlet中获取:

实际开发是这样写的:

如果配置了多个init-param:

如何获得呢?

应用的例子:

struts就是一个大大的servlet,所以他的web.xml中是这样的:通过servletconfig来配置要读取的xml

之一--------->servletContext(context域对象)

首先要了解这个servletContext代表当前web应用

这个对象意味着这个web应用下的servlet可以通过他来共享信息

比如说servlet1用setAttibute存东西

servlet2用getAttibute取东西

还有很多方法可以去网上看文档,记住这个对象的含义最重要

如何调用:

ServletConfig和这个servletContext是兄弟,所以可以这样ServletConfig.getServletContext

package cn.itcaste.web.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDemo6
*/
@WebServlet("/ServletDemo6")
public class ServletDemo6 extends HttpServlet {
//ServletContext事例
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//得到servletcontext方式一
this.getServletConfig().getServletContext();
//得到servletcontext方式二
this.getServletContext();
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);
} }

servletcontext细节一实现数据共享demo

启动tomcat先访问7,把data注入然后再取出来

package cn.itcaste.web.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDemo7
*/
@WebServlet("/ServletDemo7")
public class ServletDemo7 extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data="aaaa";
this.getServletContext().setAttribute("data1", data);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
package cn.itcaste.web.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDemo8
*/
@WebServlet("/ServletDemo8")
public class ServletDemo8 extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String value=(String) this.getServletContext().getAttribute("data1");
System.out.println(value); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

结果:控制台输出aaaa

servletcontext细节二:

在web.xml配置好web应用的初始化参数,加载web 应用会自动封装到servletcontext对象里

servletcontext细节三:servlet的转发

首先转发的含义是,你找我借钱,我没有,我去找其他人帮你(相当于发一次请求)

重定向是,你找我借钱,我没有,我告诉你谁有,你自己去找她(相当于发两次请求)

先做一个实例感受一下什么是转发,但是数据是不可以通过servletcontext传递的!!!!,servlet把数据准发给jsp,jsp来显示并且处理

ServletDemo10:
package cn.itcaste.web.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDemo10
*/
@WebServlet("/ServletDemo10")
public class ServletDemo10 extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data="aaaa";
this.getServletContext().setAttribute("data", data); RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/1.jsp");
rd.forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>
<%
String data=(String) application.getAttribute("data");//application就是serletcontext!
out.write(data);
%>
</h1>
</body>
</html>

demo结果:

servletcontext细节四:用servletcontext读取properties文件-------1)

重点在于:InputStream in=this.getServletContext().getResourceAsStream("/WEB-INF/classes/kms.properties");//获取properties内容。      这个地址是编译后的地址src文件夹就会消失,变成在WEB-INF文件夹中的classes里!

properties位置的几种可能:

/WEB-INF/classes/kms.properties--------       》

/WEB-INF/classes/cn/itcaste/kms.properties------>

/kms.properties------------------------------------------>

servletcontext细节四:用servletcontext读取properties文件-------2)

传统的io流属于相对路径,是相对于java虚拟机,目前也就是tomcat里的bin文件夹,所以在用之前要取绝对路径(这个方法的好处在于可以取到资源名字)

最新文章

  1. css3整理--filter
  2. C#连接SQLite数据库方法
  3. Codeforces 364
  4. Android之TextView的样式类Span的使用具体解释
  5. composer时间长了,提示需要升级,结果问题来了
  6. java.util.Timer类似于闹钟定时做任务
  7. 1.配置vsftp服务器
  8. Oracle中dblink如何使用
  9. 【JS】空格分隔手机号
  10. eMMC基础技术3:eMMC总线token
  11. LoadRunner脚本参数化之设置条件与运行结果说明
  12. .NET项目引用黄色小三角以及找不到依赖的解决方法
  13. GitHub网站操作
  14. 028 Partitioner:数据分区器
  15. XSS 与 CSRF 两种跨站攻击
  16. Fluent NHibernate AutoMapping Conventions
  17. 重载delete时的那点事
  18. PHP类(三)-类的封装
  19. Qt之任务栏系统托盘图标
  20. 利用Filter解决跨域请求的问题

热门文章

  1. 02、Universal app 中按钮图标使用
  2. dbcp 详细配置
  3. python学习笔记(6)--有道翻译爬虫
  4. [shell]简单的shell提示和参数脚本
  5. [Busybox]Busybox制作文件系统
  6. 实例具体解释Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(二)
  7. MySQL 5.6的72个新特性(译)
  8. Web项目的WEB-INF目录使用说明以及重定向与转发
  9. 如果想要跨平台,在file类下有separtor(),返回锁出平台的文件分隔符
  10. 基于Unity5的TPS整理