日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】

發布時間:2024/9/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Java后端 學習路線 筆記匯總表【黑馬程序員】
  • Request和Response-學習筆記01【Request_原理和繼承體系、Request_獲取請求數據】【day01】
  • Request和Response-學習筆記02【請求轉發和request共享數據、Request_獲取ServletContext、request登錄案例】[day01]
  • Request和Response-學習筆記03【HTTP響應協議、response之重定向、response之相對路徑和絕對路徑】【day02】
  • Request和Response-學習筆記04【response之輸出數據、response之驗證碼】【day02】
  • Request和Response-學習筆記05【ServletContext對象、文件下載】【day02】
  • 目錄

    03 請求轉發和request共享數據

    Request_請求轉發

    Request_共享數據(域對象)

    04 Request_獲取ServletContext

    Request_獲取ServletContext

    05 request登錄案例

    登錄案例_需求

    登錄案例_分析

    登錄案例_代碼實現1

    開發步驟1:創建項目,導入html頁面,配置文件,jar包

    開發步驟2:創建數據庫環境

    開發步驟3:創建包cn.itcast.domain,創建類User

    開發步驟4:創建包cn.itcast.util,編寫工具類JDBCUtils

    開發步驟5:創建包cn.itcast.dao,創建類UserDao,提供login方法

    測試login()方法

    登錄案例_代碼實現2

    ?開發步驟6:?編寫cn.itcast.web.servlet.LoginServlet類

    ?開發步驟7:編寫FailServlet和SuccessServlet類

    開發步驟8:login.html中form表單的action路徑的寫法

    登錄案例_BeanUtils基本使用

    開發步驟9:BeanUtils工具類,簡化數據封裝

    登錄案例_BeanUtils介紹


    03 請求轉發和request共享數據

    Request_請求轉發

    Request_其他功能:
    ?? ??? ?1. 獲取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數。
    ?? ??? ?2. 請求轉發:一種在服務器內部的資源跳轉方式
    ?? ??? ??? ?1. 步驟:
    ?? ??? ??? ??? ?1. 通過request對象獲取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path)
    ?? ??? ??? ??? ?2. 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
    ?? ??? ??? ?2. 特點:
    ?? ??? ??? ??? ?1. 瀏覽器地址欄路徑不發生變化。
    ?? ??? ??? ??? ?2. 只能轉發到當前服務器內部資源中。
    ?? ??? ??? ??? ?3. 轉發是一次請求。

    Request請求轉發&域對象

    Request_共享數據(域對象)

    Request_其他功能:
    ?? ??? ?1. 獲取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數。
    ?? ??? ??? ?1. String getParameter(String name):根據參數名稱獲取參數值 username=zs&password=123
    ?? ??? ??? ?2. String[] getParameterValues(String name):根據參數名稱獲取參數值的數組 hobby=xx&hobby=game
    ?? ??? ??? ?3. Enumeration<String> getParameterNames():獲取所有請求的參數名稱
    ?? ??? ??? ?4. Map<String,String[]> getParameterMap():獲取所有參數的map集合
    ?? ??? ?2. 請求轉發:一種在服務器內部的資源跳轉方式
    ?? ??? ??? ?1. 步驟:
    ?? ??? ??? ??? ?1. 通過request對象獲取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path)
    ?? ??? ??? ??? ?2. 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
    ?? ??? ??? ?2. 特點:
    ?? ??? ??? ??? ?1. 瀏覽器地址欄路徑不發生變化
    ?? ??? ??? ??? ?2. 只能轉發到當前服務器內部資源中。
    ?? ??? ??? ??? ?3. 轉發是一次請求
    ?? ??? ?3. 共享數據:
    ?? ??? ??? ?* 域對象:一個有作用范圍的對象,可以在范圍內共享數據
    ?? ??? ??? ?* request域:代表一次請求的范圍,一般用于請求轉發的多個資源中共享數據
    ?? ??? ??? ?* 方法:
    ?? ??? ??? ??? ?1. void setAttribute(String name,Object obj):存儲數據
    ?? ??? ??? ??? ?2. Object getAttitude(String name):通過鍵獲取值
    ?? ??? ??? ??? ?3. void removeAttribute(String name):通過鍵移除鍵值對
    ?? ??? ?4. 獲取ServletContext

    Request請求轉發&域對象

    04 Request_獲取ServletContext

    Request_獲取ServletContext

    Request_其他功能:
    ?? ??? ?1. 獲取請求參數通用方式
    ?? ??? ?2. 請求轉發
    ?? ??? ?3. 共享數據
    ?? ??? ?4. 獲取ServletContext:
    ?? ??? ??? ?* ServletContext getServletContext()

    05 request登錄案例

    登錄案例_需求

    案例:用戶登錄

    * 用戶登錄案例需求:
    ?? ?1.編寫login.html登錄頁面
    ?? ??? ?username & password 兩個輸入框
    ?? ?2.使用Druid數據庫連接池技術,操作mysql,day14數據庫中user表
    ?? ?3.使用JdbcTemplate技術封裝JDBC
    ?? ?4.登錄成功跳轉到SuccessServlet展示:登錄成功!用戶名,歡迎您
    ?? ?5.登錄失敗跳轉到FailServlet展示:登錄失敗,用戶名或密碼錯誤

    ?

    登錄案例_分析

    登錄案例分析

    登錄案例_代碼實現1

    開發步驟1:創建項目,導入html頁面,配置文件,jar包

    ?

    開發步驟2:創建數據庫環境

    CREATE DATABASE day14;

    USE day14;

    CREATE TABLE USER(
    ?? ?id INT PRIMARY KEY AUTO_INCREMENT,
    ?? ?username VARCHAR(32) UNIQUE NOT NULL,
    ?? ?PASSWORD VARCHAR(32) NOT NULL
    );

    開發步驟3:創建包cn.itcast.domain,創建類User

    開發步驟4:創建包cn.itcast.util,編寫工具類JDBCUtils

    package cn.itcast.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import javax.xml.crypto.Data; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties;/*** JDBC工具類 使用Durid連接池*/ public class JDBCUtils {private static DataSource ds;static {try {//1.加載配置文件Properties pro = new Properties();//使用ClassLoader加載配置文件,獲取字節輸入流InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//2.初始化連接池對象ds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 獲取連接池對象*/public static DataSource getDataSource() {return ds;}/*** 獲取連接Connection對象*/public static Connection getConnection() throws SQLException {return ds.getConnection();} }

    開發步驟5:創建包cn.itcast.dao,創建類UserDao,提供login方法

    // 調用query方法
    User user = template.queryForObject(sql,?new BeanPropertyRowMapper<User>(User.class),?loginUser.getUsername(), loginUser.getPassword());

    package cn.itcast.dao;import cn.itcast.domain.User; import cn.itcast.util.JDBCUtils; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate;/*** 操作數據庫中User表的類——增刪改查方法全在此類中*/ public class UserDao {//聲明JDBCTemplate對象共用private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());/*** 登錄方法** @param loginUser 只有用戶名和密碼* @return user包含用戶全部數據, 沒有查詢到,返回null*/public User login(User loginUser) {try {//1.編寫sqlString sql = "select * from user where username = ? and password = ?";//2.調用query方法User user = template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),loginUser.getUsername(), loginUser.getPassword());return user;} catch (DataAccessException e) {e.printStackTrace(); // 記錄日志return null;}} }

    測試login()方法

    登錄案例_代碼實現2

    ?開發步驟6:?編寫cn.itcast.web.servlet.LoginServlet類

    LoginServlet.java:

    package cn.itcast.web.servlet;import cn.itcast.dao.UserDao; import cn.itcast.domain.User; import org.apache.commons.beanutils.BeanUtils;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 java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Map;@WebServlet("/loginServlet") public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.設置編碼req.setCharacterEncoding("utf-8");/* //2.獲取請求參數String username = req.getParameter("username");String password = req.getParameter("password");//3.封裝user對象User loginUser = new User();loginUser.setUsername(username);loginUser.setPassword(password);*///2.獲取所有請求參數Map<String, String[]> map = req.getParameterMap();//3.創建User對象User loginUser = new User();//3.2使用BeanUtils封裝try {BeanUtils.populate(loginUser, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//4.調用UserDao的login方法UserDao dao = new UserDao();User user = dao.login(loginUser);//5.判斷userif (user == null) {//登錄失敗req.getRequestDispatcher("/failServlet").forward(req, resp);} else {//登錄成功//存儲數據req.setAttribute("user", user);//轉發req.getRequestDispatcher("/successServlet").forward(req, resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);} }

    ?開發步驟7:編寫FailServlet和SuccessServlet類

    SuccessServlet.java:

    package cn.itcast.web.servlet;import cn.itcast.domain.User;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 java.io.IOException;@WebServlet("/successServlet") public class SuccessServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//獲取request域中共享的user對象User user = (User) request.getAttribute("user");if(user != null){//給頁面寫一句話//設置編碼response.setContentType("text/html;charset=utf-8");//輸出response.getWriter().write("登錄成功!"+user.getUsername()+",歡迎您!");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);} }

    FailServlet.java:

    package cn.itcast.web.servlet;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 java.io.IOException;@WebServlet("/failServlet") public class FailServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//給頁面寫一句話//設置編碼response.setContentType("text/html;charset=utf-8");//輸出response.getWriter().write("登錄失敗,用戶名或密碼錯誤!");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);} }

    開發步驟8:login.html中form表單的action路徑的寫法

    登錄案例_BeanUtils基本使用

    開發步驟9:BeanUtils工具類,簡化數據封裝

    登錄案例_BeanUtils介紹

    BeanUtils工具類,簡化數據封裝
    ??? * 用于封裝JavaBean的
    ?? ??? ?1. JavaBean:標準的Java類
    ?? ??? ??? ?1. 要求:
    ?? ??? ??? ??? ?1. 類必須被public修飾
    ?? ??? ??? ??? ?2. 必須提供空參的構造器
    ?? ??? ??? ??? ?3. 成員變量必須使用private修飾
    ?? ??? ??? ??? ?4. 提供公共setter和getter方法
    ?? ??? ??? ?2. 功能:封裝數據
    ?? ??? ?2. 概念:
    ?? ??? ??? ?成員變量:
    ?? ??? ??? ?屬性:setter和getter方法截取后的產物
    ?? ??? ??? ??? ?例如:getUsername() --> Username--> username
    ?? ??? ?3. 方法:
    ?? ??? ??? ?1. setProperty()
    ?? ??? ??? ?2. getProperty()
    ?? ??? ??? ?3. populate(Object obj, Map map):將map集合的鍵值對信息,封裝到對應的JavaBean對象中

    總結

    以上是生活随笔為你收集整理的Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。