- 获取Servlet的配置对象ServletConfig对象
每个Servlet都有ServletConfig对象
获取方式1
public class Demo01 extends HttpServlet {
//获取方式一
//声明一个成员变量 保存对象
private ServletConfig config ;
//初始化方法
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
//在初始化的时候给成员变量赋值
this.config = config;
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(this.config);
//可以通过ServletConfig对象获取Servlet的配置信息
String value = this.config.getInitParameter("liubin");
System.out.println(value);
//获取多个配置信息
Enumeration<String> name = this.config.getInitParameterNames();
while (name.hasMoreElements()) {
String element = name.nextElement();
System.out.println(element);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
方式2
通过父类来获取
public class Demo01 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取方式二(直接调用父类的方法)
ServletConfig myConfig = this.getServletConfig();
String value = myConfig.getInitParameter("liubin");
System.out.println(value);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
域对象
ServletContext对象是作用返回最大的域对象,并且整个工程只有一个该对象
ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。
可以作用与整个工程,都可以使用该对象,Servlet对象之间可以利用ServletContext对象进行通讯
域对象利用了单例的特点
注意:1.所有的域对象内部都是维护了一个map集合
2.所得域对象都有setAttribute getAttribute方法
如何获取ServletContext对象?
方式1:通过ServletConfig对象获取
方式2:通过分类来获取,该方法在ServletConfig接口中域对象的作用
1.存值取值
2.获取全局配置信息
3.可以获取服务器上所有的资源真实路径
4.可以进行请求转发
获取Context配置信息
“
ServletContext context = this.getServletContext();
String value = context.getInitParameter(“kuner”);
System.out.println(value);
向context保存一个值
ServletContext context = this.getServletContext();
context.setAttribute(“username”, “liubin”);
取出保存在context中的值
ServletContext context = this.getServletContext();
Object object = context.getAttribute(“username”);
获取服务器上的资源真实路径
String path = this.getServletContext().getRealPath(“/WEB-INF/c.properties”);
FileInputStream fis = new FileInputStream(path);
Properties properties = new Properties();
properties.load(fis);
properties.getProperty(“key”)
获得值是key对应的值
String path = this.getServletContext().getRealPath()
方法获取文件真实路径
/WEB-INF/c.properties
指的是相对工程的路径
请求转发
1.用户只发起了一次请求
2.用户请求时并不知道内部发生了什么
实现代码
public class Demo05 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("xiaofneg借点钱给我");
System.out.println("xiaofneg我没钱 坤有钱");
//通过Context对象获取请求转发器
//注意:请求转发只能是站内(本工程)转发
//转发的路径是相对于工程
//这个对象就是请求转发器
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/demo06");
//然后请求转发
dispatcher.forward(request, response);
System.out.println("qian借到了");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
利用域对象调用getRequestDispatcher()方法获取请求转发器,方法括号中填的就是转发的文件的地址
执行的顺序:先执行请求转发器在执行deno06最后执行请求转发
## 响应 ##
响应分为
1.响应行
相应的状态 http协议
2.响应头
告诉浏览器我要做什么操作需要用什么编码格式来解析我的响应
3.响应体
响应浏览器的内容
代码实现
public class Demo07 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//tomcat默认的编码格式 ISO-8859-1不支持中文
//修改编码格式
//response.setCharacterEncoding("UTF-8");
//设置响应头(告诉浏览器使用什么格式解析数据)
//response.setHeader("Content-type", "text/html;charset=UTF-8");
//二合一写法(之后在写Servlet 第一句就写这个)
response.setContentType("text/html;charset=UTF-8");
//接到请求后向浏览器写个字符串
//通过响应对象response 中的流对象 回写
//注意:你在Servlet中使用字符流那么就不能在使用字节流
PrintWriter writer = response.getWriter();
writer.write("刘斌");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
“`