zoukankan      html  css  js  c++  java
  • JavaWeb(一)Servlet

    一、Servlet简介

           Servlet 是J2EE的一个规范,为Java提供统一的web应用规范。

          广义的Servlet 是指实现了servlet的类

    二、Servlet工作原理

          1、原理: 一个http请求到来,容器将请求封装成servlet中的request对象,在request对象中可以打得到http信息,处理完这个请求后,将数据封装成servelt的repsonse对象,应用容器将response对象解析之后封装成http response;    

          2、Servlet生命周期      

               初始化init():  服务器启动时(web.xml中配置load-on-startup=1,默认为0)或者第一次请求该servlet时,就会初始化一个Servlet对象,也就是会执行初始化方法init(ServletConfig conf)

           service(运行):  该servlet对象去处理所有客户端请求,在service(ServletRequest req,ServletResponse res)方法中执行

           destroy(销毁): 最后服务器关闭时,才会销毁这个servlet对象,执行destroy()方法。

         3、web服务器通过Servelt处理动态请求,本质上是帮助程序

             Servlet工作流程分为三个阶段。init(初始化),service(运行),destroy(销毁)Servlet没有main方法,所有行为由Container控制。Container就是一个java程序。在加载Servlet的.class后,Servlet会由构造函数生成一个实例,然后Container调用init()方法完成参数的初始化,接着调用service()方法,service会根据网页的请求,调用doGet或者doPost方法,最后调用销毁方法。整个流程如下图:

       [作者:温学良
         链接:https://www.zhihu.com/question/21416727/answer/82511153
         来源:知乎
         著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。]

              

           

       

    三、Servlet开发流程

           0、目录

          

          1、先在Tomcat目录下建立一个 WEB-INF文件夹;

         

          2、在WEB-INF文件夹下面建立一个web.xml文件,记录网站配置信息;

               建立类文件集,存放servlet(就是目录下面的com.web文件夹)

               创建一个servlet --- AdminAddProductService类

    package com.web;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.sql.Date;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.Map;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.beanutils.BeanUtils;
    import com.domain.Product;
    import com.service.AdminProductService;
    
    /**
     * Servlet implementation class AdminAddProductServlet
     */
    public class AdminAddProductServlet extends HttpServlet {
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
            request.setCharacterEncoding("UTF-8");
            
            Map<String, String[]> properties = request.getParameterMap();
            Product product = new Product();
            try {
                BeanUtils.populate(product, properties);
            } catch (IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
            }
            
            product.setPid(UUID.randomUUID().toString());
            private String pimage;
            product.setPimage("products/1/c_0033.jpg");
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            String pdate = format.format(new Date(0));
            product.setPdate(pdate);
            product.setPflag(0);
            
            AdminProductService service = new AdminProductService();
            try {
                service.addProduct(product);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            response.sendRedirect(request.getContextPath()+"/adminProductList");
            
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }

              web.xml 自动配置以下信息

      <servlet>
        <description></description>
        <display-name>AdminAddProductServlet</display-name>
        <servlet-class>com.web.AdminAddProductServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>AdminAddProductServlet</servlet-name>
        <url-pattern>/adminAddProduct</url-pattern>
      </servlet-mapping>

        访问过程

     

       

    一个完整教程链接:

    https://www.cnblogs.com/whgk/p/6399262.html

  • 相关阅读:
    Oracle 跨库查询表数据(不同的数据库间建立连接)
    Oracle 跨库查询表数据(不同的数据库间建立连接)
    Win10“启动”文件夹在哪里?如何打开Win10启动文件夹?
    常用[js,css,jquery,html]
    备忘
    常用网站
    常用SQL[ORACLE]
    基于 Promise 的 HTTP 请求客户端 axios
    CSS中字体响应式的设置
    HTML5 History API让ajax能回退到上一页
  • 原文地址:https://www.cnblogs.com/Jomini/p/8744351.html
Copyright © 2011-2022 走看看