1、什么是Servlet?
servlet是运行在Web服务器中的小型Java程序(即:服务器端的小应用程序)。
servlet通常通过HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
2、Servlet生命周期?
实例化--->初始化--->服务--->销毁 实例化和初始化是第一次访问servlet时同时进行的。
3、Servlet的三种创建方式?
<1>.实现javax.servlet.Servlet接口
<2>.继承javax.servlet.GenericServlet类
<3>.继承javax.servlet.http.HttpServlet类(常用)
Servlet --> GenericServlet --> HttpServlet (继承HttpServlet)
曾祖父 爷爷 爸爸 孙子
4、Servlet的线程安全?
单实例:每次访问多线程
解决线程安全问题的最佳办法,不要写全局变量,而写局部变量。
5、ServletConfig的作用?
<1>获取Servlet的配置信息
web.xml
<servlet>
<servlet-name>MyServletTest</servlet-name>
<servlet-class>com.bh.MyServletTest</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyServletTest</servlet-name>
<url-pattern>/MyServletTest</url-pattern>
</servlet-mapping>方式一:
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String encoding = config.getInitParameter("encoding");
System.out.println("encoding:"+encoding); //UTF-8
}
方式二:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String encoding = this.getServletConfig().getInitParameter("encoding");
System.out.println("encoding:"+encoding); //UTF-8
}
方式三:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String encoding = this.getInitParameter("encoding");
System.out.println("encoding:"+encoding); //UTF-8
}<2> 获取ServletContext6、ServletContext?
<1>获取方式
① servletConfig.getServletContext()
② request.getServletContext()
<2>作用
①获取当前域对象的共享数据 setAttribute getAttribute rmoveAttribute
ServletContext代表的是整个应用。一个应用只有一个ServletContext对象。单实例。
②获取全局配置信息
<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
String encoding = servletContext.getInitParameter("encoding");
③获取资源路径(可以得到当前应用任何位置的任何资源)
String path = servletContext.getRealPath("/");
// “/” 表示当前应用 E:\develop\Tomcat 8.0\Filter\
String contextPath = servletContext.getContextPath();
// /Filter
④实现转发
ServletContext servletContext = req.getServletContext();
RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/index.jsp");
requestDispatcher.forward(req,resp);
通过参数传过来的对象,就叫依赖 通过方法得到的对象,就叫关联
本文详细介绍了Servlet的概念、生命周期、创建方式及线程安全性等核心内容,并解释了ServletConfig与ServletContext的作用。
343

被折叠的 条评论
为什么被折叠?



