servlet学习总结

Servlet学习总结


简介

  • 用Java编写的服务器端程序,主要功能在于交互式地浏览和生成数据,生成动态Web内容(即接受客户端请求并响应动态web内容的服务端程序)

Servlet类的两种配置方式

  • 使用注解方式

    • 创建步骤:

      1. 定义一个java类,让其继承于HttpServlet类,并覆盖重写需要的方法

      2. 使用注解WebServlet(“path”),path指的是在该项目中访问该Servlet类的地址路径

    • 例子

        package cn.zero.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;
        
        @WebServlet("/servlet1")	//注解配置访问路径
        public class Servlet1 extends HttpServlet{
        
        	@Override
        	public void init() throws ServletException {
        		// TODO Auto-generated method stub
        		super.init();
        	}
        
        	@Override
        	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        		// TODO Auto-generated method stub
        		super.service(req, resp);
        	}
        
        	@Override
        	public void destroy() {
        		// TODO Auto-generated method stub
        		super.destroy();
        	}
        }
      
  • 使用配置文件方式

    • 创建步骤:

      1. 定义一个java类,让其继承于HttpServlet类,并覆盖重写需要的方法

      2. 在WEB-INF中创建一个web.xml配置文件

      3. 在该文件中配置该Servlet类的访问地址映射

    • 例子:

      Servlet类

        package cn.zero.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;
        
        public class Servlet1 extends HttpServlet{
        
        	@Override
        	public void init() throws ServletException {
        		// TODO Auto-generated method stub
        		super.init();
        	}
        
        	@Override
        	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        		// TODO Auto-generated method stub
        		super.service(req, resp);
        	}
        
        	@Override
        	public void destroy() {
        		// TODO Auto-generated method stub
        		super.destroy();
        	}
        }
      

      web.xml文件

        
        
          web04
          
          
            index.html
            index.jsp
          
          
          
          
          	servlet1
          	cn.zero.servlet.Servlet1
          
          
          
          
          	servlet1
          	/servlet1
          
        
      

Servlet的生命周期

  • init()

    • 调用时机:该方法会在Servlet类被调用时调用一次,此后不会再调用

    • 作用:一般用于初始化一些数据,并让这些数据作用于整个Servlet类的生命周期

  • service()

    • 调用时机:当服务器收到一个客户端请求时,服务器会创建一个新线程并调用该服务方法

    • 作用:该方法会识别请求中使用的方法是get还是post、等等,并自动调用Servlet中相应的处理方法,比如doGet(), doPost()。

  • destory()

    • 调用时机:在Servlet类被销毁时调用一次

    • 作用:一般用于对一些连接的关闭,保护数据的安全性


Servlet的请求和响应

  • 客户端的请求:

    • 简介:客户端请求被封装在HttpServletRequest 对象中,封装了一系列获取客户端的请求报文信息的方法

    • HttpServletRequest对象的常用方法:

      • Enumeration getAttributeNames():返回一个枚举,包含该请求中的所有属性的名称

      • Object getAttribute(String name):以对象形式返回已命名属性的值,不存在则返回 null。

      • Enumeration getParameterNames():返回一个 String 对象的枚举,包含该请求中所有参数的名称。

      • String getParameter(String name):获取参数对应的值

      • HttpSession getSession():返回与该请求关联的当前 session 会话

      • String getContextPath():返回该项目的根目录

      • void getRequestDispatcher("/url").forward(HttpServletRequest request, HttpServletResponse response):转发请求,将请求转发到新的url

  • 服务端响应:

    • 简介:服务端响应被封装在HttpServletResponse对象中,该对象提供了一系列用于设置http响应报文的方法

    • 常用方法:

      • void sendRedirect(String location):重定向到另一个URL地址

      • void setCharacterEncoding(String charset):设置被发送到客户端的响应报文的字符编码

      • void setStatus(int sc):为该响应设置状态码。


ServletSession和ServletContext对象

  • ServletSession对象:

    • 简介:用于保持客户端和服务端的一次会话信息,用于克服http协议的无状态特性(一般一个客户端会对应一个会话)

    • 获取方式:使用HttpServletRequest对象的getSession()方法获取

        HttpSession session = request.getSession();		//request是HttpServletRequest对象
      
    • 常用方法:

      • public Object getAttribute(String name):从该对象中获取一个属性

      • public void setAttribute(String name, Object value):从该对象中添加一个属性

      • public void removeAttribute(String name):从该对象中移除某个属性

  • ServletContext对象:

    • 简介:ServletContext对象是web应用启动时,Servlet容器创建的对象,和web应用共存亡,其作用是为每一个Servlet类实例提供公共的域空间,使这些实例可以访问公共的空间

    • 获取方式:

      1. 通过ServletConfig对象来获取该对象,ServletConfig对象代表着当前这个Servlet类的配置信息对象

         ServletContex context = this.getServletConfig().getServletContext();
        
      2. 直接通过this获取该对象

         ServletContex context = this.getServletContext();
        
    • 常用方法:

      • public void setAttribute(String name, Object obj):添加一个属性到该对象中

      • public Object getAttribute(String name):从该对象中获取一个属性

      • public void removeAttribute(String name):从该对象删除一个属性


Servlet与jsp的区别和联系

  • 联系:

    • jsp本质上是一个Servlet,最终会被编译成一个Servlet

    • jsp的九大隐式对象都可以在Servlet中找到对应的映射

  • 区别:

    • jsp一般用于动态页面的展示

    • Servlet一般用于对客户端请求和服务端响应的业务处理

  • 结合:

    • 在使用MVC模式开发的场景下,jsp和Servlet作为不同的模块处理不同的事务,使得项目结构变得清晰、便于后期代码维护

你可能感兴趣的:(java,web)