• Servlet的使用


    Servlet是使用java Servlet应用程序设计接口及相关类和方法的java程序。Servlet主要用于处理客户端传来的http请求,并返回一个响应。通常说的Servlet就是指HttpServlet,能够处理的请求doGet()、doPost()和service()等方法。可以直接继承javax.servlet.http.HttpServlet。
    
    Servlet的主要功能:
    1、    创建并返回一个包含基于客户请求性质动态内容的完整HTMl页面。
    2、    创建可嵌入到现有Html页面中的部分html页面。
    3、    与其他服务器资源(包括数据库和基于java的应用程序)通信。
    4、    用多个客户端处理链接,接受多个客户端的输入,并将结果传递到多个客户端上。
    5、    当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器到Applet的新连接,并将该启动客户浏览器和服务器之间的连接,可以通过定制协议来通信。
    6、    将定制的处理提供给所有服务器的标准程序。
    
    Servlet特点:
    1、    高效
    优势在于多个来自客户端的请求访问时,Servlet为每个请求分配一个线程,而不是进程。
    2、    方便
    Servlet提供大量的实用工具例程,完成表单数据、读取和设置Http头,以及处理Cookie和跟踪会话等。
    3、    跨平台
    编译完成后可以在不同的系统平台和应用服务器下运行。
    4、    功能强大
    可以直接和Web服务器交互,而普通的GGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
    5、    灵活性和可扩展性
    6、    共享数据
    7、    安全
    由于java的安全机制,SSLCA认证。
    
    Servlet的生命周期:
    1、    客户端请求Servlet或Web服务器启动,容器环境加载一个java Servlet类。
    2、    Servlet根据客户端的请求创建一个或多个Servlet对象实例。并把对象添加到Servlet链接池。
    3、    Servlet调用初始化Init()方法。初始化ServletConfig对象。并项Servlet传递数据。
    4、    Servlet接受HttpServletRequest和HttpServletResponse对象从Web客户端接受Http发送的请求和Servlet生成响应。
    5、    Servlet并把请求和响应传递给HttpServlet.service()方法。
    6、    Servlet通过HttpServletRequest获取请求数据,访问HttpSession或Cookie对象。通过HttpServletResponse对象生成Http响应数据。
    7、    当Web服务器和容器关闭时会自动调用HttpServlet.destroy()方法关闭所有打开的资源,并执行一些关闭前的处理。
    
    
    
    Servlet接口常用方法:
    方法    说明
    Void service(ServletRequest request,ServletResponse response)    Servlet在处理客户端的请求时调用此方法。
    Void destroy()    当Servlet容器移除Servlet对象是调用此方法,以释放资源
    ServletConfig   getServletConfig()    用于获取Servlet对象的配置信息,返回ServletConfig对象
    String   getServletInfo()    返回有关Servlet的信息,它是纯文本格式的字符串
    
    
    HttpServlet类常用方法:
    方法    说明
    Void doGet(HttpServletRequest  request,HttpServletResponse  response)    用于处理Get类型的Http请求的处理方法
    Void  doPost(HttpServletRequest  request,HttpServletResponse  response)    用于处理Post类型的Http请求的方法
    Void  doPut(HttpServletRequest  request,HttpServletResponse  response)    用于处理Put类型的Http请求的方法
    
    HttpServletRequest接口常用方法:
    方法    说明
    String  getContextPath()    返回上下文路径,此路径以”/”开头
    Cookie[]  getCookies()    返回所有Cookie对象,返回类型为Cookie数组
    String  getMethod()    返回Http请求类型,如get和Post等
    String  getQueryString()    返回请求查询的字符串
    String  getRequestURL()    返回主键名到请求参数之间的部分字符串
    HttpSession  getSession()    返回与客户端关联的HttpSession对象
    
    HttpServletResponse接口的常用方法:
    方法    说明
    Void  addCookie(Cookie cookie)    向客户端发送Cookie信息
    Void  sendError(int   sc)    发送一个错误状态码sc的错误响应到客户端
    Void  sendError(int  sc,String   msg)    发送包含错误状态码及错误信息的响应到客户端
    Void sendRedirect(String location)    将客户端请求重定向到新的URL
    
    Servlet实例:
    通过web.xml文件配置Servlet信息。
    <!-- 注册Servlet -->
      <servlet>
      <!-- Servlet的描述信息 -->
      <description>描述Servlet信息</description>
      <!-- Servlet的名称 -->
      <servlet-name>MyServlet</servlet-name>
      <!-- Servlet的完整的类名 -->
      <servlet-class>com.wgh.MyServlet</servlet-class>
      </servlet>
      
      <!-- Servlet映射 -->
      <servlet-mapping>
      <!-- Servlet的名称 -->
      <servlet-name>MyServlet</servlet-name>
      <!-- 访问URL地址 -->
      <url-pattern>/MyServlet</url-pattern>
      </servlet-mapping>
    
    通过注解配置Servlet信息:
    @WebServlet("/MyServlet")
    public class MyServlet extends HttpServlet {
    
    注意:注解跟web.xml配置信息不可以同时使用,只能二选一。
    
    通过Form表单访问Servlet:
    <form action="MyServlet" method="post">
    <ul>
    <li>
    <input type="text" name="username" />
    </li>
    <li><input type="submit" value="提交"/></li>
    </ul>
    </form>
    
    Servlet处理业务逻辑:
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            String username=request.getParameter("username");
            
            if("xiaoming".equals(username)){
                //重定向页面
                response.sendRedirect("login.jsp");
                //转发页面
                RequestDispatcher dispatcher=request.getRequestDispatcher("login.jsp")
            //执行转发
               dispatcher.forward(request, response);
            }
            
            
            doGet(request, response);
        }
    
    转发和重定向的区别:
    转发不会失效Request中存放的信息,而且转发后的页面跟之前的页面是同意请求,不会改变URL链接路径。
    重定向要失效Request中存放的信息,而且转发后是客户端项服务器端重新发送的一个请求,与之前的请求没有任何关系。且转发比较慢。
    
    转发的方法:
    RequestDispatcher接口实现的。主要方法有:forward()方法用于把请求转发到服务器上的另一资源,可以是Servlet、jsp或是html。
    Include()方法用于服务器上的另一个资源(Servlet、jsp、html)包含到响应中。
  • 相关阅读:
    map按照值排序
    结构体的三种排序方式
    归并排序
    数组模拟双向链表
    二刷斐波那契高精度
    2019年9月训练(贰)区间DP (luogu 4290)
    2019年9月训练(壹)数位DP (HDU 2089)
    2019年8月训练(贰)
    2019年8月训练(壹)二分,三分
    2019年7月训练(柒)
  • 原文地址:https://www.cnblogs.com/gynbk/p/6556301.html
Copyright © 2020-2023  润新知