1. 程式人生 > >JavaWeb(一)Servlet

JavaWeb(一)Servlet

-- context response rop cat 執行 網頁 img exception

一、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-name>AdminAddProductServlet</servlet-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

JavaWeb(一)Servlet