Servlet笔记

1、servlet快速入门!
(1) servlet是web的三大组件之一;web的三大组件是指:Servlet、Filter、Listener
(2) 狭义的servlet:servlet
(3) 广义的servlet:凡是实现了servlet接口的类都称之为servlet!
2、如何快速定义一个servlet?
(1) 自定义实现类,实现servlet接口,实现接口就意味着实现servlet中的方法!
(2) 去web.xml中注册一下!

3、servlet的配置

 1 <!-- 向服务器注册servlet -->
 2 <servlet>
 3   <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
 4   <servlet-name>AServlet</servlet-name>
 5   <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
 6   <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
 7 </servlet>
 8 
 9 <!-- servlet-mapping做请求映射 -->
10 <servlet-mapping>
11   <servlet-name>AServlet</servlet-name>
12   <!-- 请求映射是通过这个url-pattern来实现的! -->
13   <url-pattern>/BServlet</url-pattern>
14 </servlet-mapping>

注意点:
(1) <url-pattern>标签中指定的映射路径不必和<servlet-name>标签指定的内容保持一致!
(2) 只有你浏览器地址栏中请求的url和我们这里<url-pattern>标签中的映射一致的时候,我们自定义的servlet类才会处理这个请求!

4、生命周期
(1) servlet是由tomcat服务器来管理的!
(2) servlet生命周期:是指servlet对象由产生到销毁的过程!
(3) servlet生命周期涉及的几个方法:
  ① 构造器方法:只会在第一次访问这个servlet的时候调用一次,调用一次就说明servlet是单例的,但是servlet是多线程的,
非线程安全的,也就是说在servlet中我们尽量不要在service方法中操作全局变量!
  ② init方法:init方法只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作!
  ③ service:service方法会在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也是写在这个service方法!
  ④ destroy方法::destroy方法只会在我们的项目卸载的时候调用一次,也就是说在服务器关闭的时候会在服务器关闭的时候调用一次!

5、servletConfig
ServletConfig:是一个接口,一个ServletConfig对象只代表当前的servlet类的配置信息。
(1) represent:

1 <servlet>
2   <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
3   <servlet-name>AServlet</servlet-name>
4   <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
5   <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
6 </servlet>

(2) 如何获取:

  由服务器创建,通过init方法的参数直接传递给我们,我们直接在init方法使用就可以了!
(3) 功能:
  getServletName():获取当前servlet-name值,也就是获取servletname
  getInitParameter("password"):获取servlet的初始化参数!
  getServletContext():获取当前web应用!
6、ServletContext
(1) 代表:代表的是当前web应用,也就是指的web.xml文件中的信息!
(2) 获取:通过ServletConfig对象的getServletContext()获取!
(3) 功能:
  ① getInitParameter:获取整个web应用的初始化参数,也就是如下:

1 <context-param>
2   <param-name>user</param-name>
3   <param-value>lisi</param-value>
4 </context-param>

  ② 获取资源的真实路径:getRealPath()

  虚拟路径:http://localhost:8080/servlet-demo1/index.html 
  真实路径:E:\LHF teacher\marsworkspace\servlet-demo1\WebContent\index.html
7、MyGenericServlet
(1) 定义一个抽象类实现servlet接口,保留service方法不去实现,其余方法都实现了!
(2) 自定义抽象类子类,在web.xml文件中注册一下这个子类!
8、HttpServlet

1 public class AServlet extends HttpServlet {
2   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
3     doPost(request,response);
4   }
5   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
6 
7   }
8 }

9、HttpServletRequest
(1) 代表:代表浏览器向服务器发送的请求报文
(2) 获取:由tomcat服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
(3) 功能:
  getParameter()获取请求参数
  getContextPath():获取当前项目名
  setAttribute/getAttribute:本身就是一个域对象!
  request.getRequestDispatcher("1.html").forward(request, response);可以实现转发功能!

10、HttpServletResponse
(1) 代表:服务器响应给浏览器的响应报文
(2) 获取:由服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
(3) 功能:
  response.getWriter().println("<h3>hello world!</h3>");可以返回给浏览器一个页面或者一个页面片段!
  response.sendRedirect("/servlet1/1.html"); :可以做请求的重定向

11、转发和重定向

转发:当浏览器向服务器发送请求的时候,服务器自己不处理,而是调用其它的web资源进行处理!
重定向:当浏览器向服务器发送请求的时候,服务器返回给浏览器一个特殊的响应,这个特殊的响应告诉浏览器再向另一个地址发送一个请求!
转发和重定向的区别:
发生在浏览器端还是服务器 浏览器的请求次数 浏览器地址栏是否发生变化 浏览器是否能够感知到
转发[request] 发生在服务器端 1 不发生变化 感知不到
重定向[response] 发生在浏览器端 2 发生变化 能感知到!

posted @ 2017-08-22 10:02  bwlu---ed  阅读(114)  评论(0)    收藏  举报