91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Servlet和jsp開發

發布時間:2020-06-14 09:20:27 來源:網絡 閱讀:335 作者:808吳彥祖 欄目:開發技術

Servlet和jsp開發
一、 Servlet
1.1、servlet簡介
Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,用Java編寫的服務器端程序,具有獨立于平臺和協議的特性,主要功能在于交互式地瀏覽和生成數據,生成動態Web內容。其實Servlet就是Java語言實現的一個接口,Servlet運行于支持Java的應用服務器中。從原理上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基于HTTP協議的Web服務器。
1.2實現過程
1.客戶端發送請求至服務器端;
2.服務器將請求信息發送至 Servlet;
3.Servlet 生成響應內容并將其傳給服務器。響應內容動態生成,通常取決于客戶端的請求;
4.服務器將響應返回給客戶端。

1.3servlet九大內置對象

  1. request對象
    該對象封裝了用戶提交的信息,通過調用該對象相應的方法可以獲取封裝的信息, 即使用該對象可以獲取用戶提交信息。 客戶端的請求參數都被封裝到這個對象里面
    2.response對象
    對客戶的請求做出動態的響應,向客戶端發送數據。
    3.session對象
    1.什么是session:session對象是一個JSP內置對象,它在第一個JSP頁面被裝載時自動創建(web容器創建的,使用者直接使用即可),完成會話期管理。
    從一個客戶打開瀏覽器并連接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱為一個會話。當一個客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間反復連接,反復刷新一個頁面,服務器應當通過某種辦法知道這是同一個客戶,這就需要session對象。
  2. aplication對象
    1.什么是application:
    服務器啟動后就產生了這個application對象,當客戶在所訪問的網站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務器關閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內置的application對象。
    2.application對象常用方法:
    (1)public void setAttribute(String key,Object obj): 將參數Object指定的對象obj添加到application對象中,并為添加的對象指定一個索引關鍵字。(這個在web開發中很創建,可以通過與對象進行轉發,達到數據共享)
    (2)public Object getAttribute(String key): 獲取application對象中含有關鍵字的對象。
  3. out對象
    out 對象是一個輸出流,用來向客戶端輸出數據。out對象用于各種數據的輸出。可以直接輸出到前端頁面中。
  4. page java.lang.Object
    對應this關鍵字。JSP網頁本身
    page對象是當前頁面轉換后的Servlet類的實例。從轉換后的Servlet類的代碼中,可以看到這種關系:
    Object page = this;
    在JSP頁面中,很少使用page對象。
    7.config
    javax.servlet. ServletConfig 的實例,該實例代表該JSP 的配置信息。常用的方法有getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。事實上, JSP 頁面通常無須配置,也就不存在配置信息。因此,該對象更多地在Servlet 中有效。

  5. exception java.lang.Throwable 的實例
    該實例代表其他頁面中的異常和錯誤。只有當頁面是錯誤處理頁面,即編譯指令page 的isErrorPage 屬性為true 時,該對象才可以使用。常用的方法有getMessageO和printStackTraceO等。

  6. pageContext
    javax.servlet.jsp.PageContext 的實例,對象直譯時可以稱作“頁面上下文”對象,代表的是當前頁面運行的一些屬性,通過此對象可以拿到其他8大對象,使用該對象可以訪問頁面中的共享數據。常用的方法有getServletContextO和getServletConfigO等。

//使用pageContext 設置屬性,該屬性默認在page 范圍內
pageContext. setAttribute ("page" , "hello") ;

//使用request 設置屬性,該屬性默認在request 范圍內
request. setAttribute ("request" , "hello");

//使用pageContext將屬性設置在request 范圍中
pageContext.setAttribute("request2" , "hello" , pageContext.REQUEST_SCOPE);

// 使用session將屬性設置在session 范圍中
session.setAttribute("session" , "hellosession"; )

//使用pageContext將屬性設置在session范圍中
pageContext.setAttribute("session2" , "hello" , pageContext.SESSION_SCOPE);

//使用application將屬性設置在application范圍中
application. setAttribute ("app" , "hello") ;

//使用pageContext 將屬性設置在application 范圍中
pageContext.setAttribute("app2" , "hello" , pageContext.APPL 工CATION_SCOPE) ;

1.4 四個作用域
1.application:全局作用范圍,整個應用程序共享,就是在部署文件中的同一個webApp共享,生命周期為:應用程序啟動到停止。
2.session:會話作用域,當用戶首次訪問時,產生一個新的會話,以后服務器就可以記住這個會話狀態。生命周期:會話超時,或者服務器端強制使會話失效。(一個簡單的應用就是可以動態的獲取登錄后的用戶名稱)
3.request:請求作用域,就是客戶端的一次請求。
4.page:一個JSP頁面。
1.5 servlet簡單案例—用戶登錄,動態獲取用戶名,顯示歡迎信息
1.下載的html頁面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>下載案例</title>
</head>
<body>
<a href="/response/ServletDownload?filename=曾惜-講真的.mp3">曾惜-講真的.mp3</a>
</body>
</html>
2.servlet后臺邏輯

package com.lyg.servlet.download;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;

@WebServlet("/ServletDownload")
public class ServletDownload extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //獲取文件名
        String filename = request.getParameter("filename");
        //獲取servletcontext對象
        ServletContext servletContext = getServletContext();
        //設置響應頭
        String mineType = servletContext.getMimeType(filename);
        response.setHeader("content-type",mineType);
        //告訴瀏覽器是打開還是保存,并設置下載后的文件名
        response.setHeader("content-disposition","attachment;filename="+filename);
        String userAgent = request.getHeader("user-agent");
        filename = URLEncoder.encode(filename, "utf-8");

        //創建輸入流,讀入目標文件
        InputStream inputStream = servletContext.getResourceAsStream("/WEB-INF/elements/"+filename);
        byte []chars=new byte[1024*8];
        //創建一個ServletOutputSteam 對象
        ServletOutputStream outputStream = response.getOutputStream();
        int len;
        while ((len=inputStream.read(chars))!=-1){
            outputStream.write(chars,0,len);
        }
        inputStream.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.doPost(request,response);
    }
}

二、jsp
2.1 jsp簡介
JSP全名為Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它 [1] 是由SUN公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML文件(.htm,.html)中插入Java程序段Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。
它實現了Html語法中的java擴展(以 <%, %>形式)。JSP與Servlet一樣,是在服務器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。
JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。他的本質上還是一個Servlet。
2.2 page指令
1.包含選項
import 使一個JAVA導入聲明被插入到最終頁面文件。
contentType 規定了生成內容的類型。當生成非HTML內容或者當前字符集character set并非默認字符集時使用。
errorPage 處理HTTP請求時,如果出現異常則顯示該錯誤提示信息頁面。
isErrorPage 如果設置為TRUE,則表示當前文件是一個錯誤提示頁面。
isThreadSafe 表示最終生成的servlet是否安全線程(threadsafe)。
2.語法
1.<%@ include file="somefile.jsp" %>:將一個頁面內容包含在一個頁面中

  1. <%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>:引入標簽庫

3.jsp和servlet綜合應用---登錄案例

  1. 登錄后臺的邏輯
package com.lyg.servlet.login;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

@WebServlet("/LoginDemo02")
public class LoginDemo02 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //設置編碼
        request.setCharacterEncoding("utf-8");
        //獲取參數
        String username = request.getParameter("username");
        String password = request.getParameter("password");final  String URL = "jdbc:mysql://localhost:3306/db1";
        final String USER = "root";
        final String PASSWORD = "12345678";
        String SQL = "select * from userinfo where name = ? and password = ?";
        HttpSession session = request.getSession();//獲取session對象
        //連接數據庫,查詢
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection(URL,USER,PASSWORD);
            PreparedStatement preparedStatement = connection.prepareStatement(SQL);
            preparedStatement.setString(1,username);
            preparedStatement.setString(2,password);
            ResultSet resultSet = preparedStatement.executeQuery();
            String db_username=null;
            String db_password =null;
            if (resultSet.next()){
                db_username=resultSet.getString(2);
                db_password=resultSet.getString(3);
            }
            //判斷用戶名和密碼是否正確
            if (username.equals(db_username) && password.equals(db_password)){
                //信息都正確
                //頁面跳轉到success.jsp;
                session.setAttribute("username",username);//存儲用戶名
                response.sendRedirect(request.getContextPath()+"/success.jsp");
            }else {
                //用戶名獲取密碼不正確
                //存儲錯誤信息
                request.setAttribute("code_error","用戶名或者密碼錯誤");
                //同一次請求,請求轉發
                request.getRequestDispatcher("/userinfo/index.jsp").forward(request,response);//轉發錯誤信息
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}
  1. 前臺頁面就是個很簡單的form表單,這里就不演示了。
    最后謝謝小伙伴的瀏覽,共同學習,共同進步~~~~
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

申扎县| 阿拉善左旗| 定日县| 平远县| 淮阳县| 静乐县| 石柱| 泰顺县| 金华市| 习水县| 南川市| 唐河县| 黄陵县| 贵州省| 乌兰浩特市| 宝鸡市| 岳阳县| 新乡市| 定西市| 公安县| 阿勒泰市| 新竹县| 福贡县| 德格县| 江津市| 郯城县| 宝丰县| 通州市| 康保县| 新宾| 襄樊市| 南江县| 龙口市| 怀柔区| 武山县| 河池市| 洮南市| 股票| 怀化市| 阿瓦提县| 唐山市|