JavaWeb学習、2日目

転送とリダイレクト

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    登陆成功<br>
    欢迎你:
    <%
        String name=request.getParameter( "username" );
    %>
<%=name%>
</body>
</html>

転送されました

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>show</title>
</head>
<body>
    <%
        //设置编码
        request.setCharacterEncoding( "UTF-8" );
        String name=request.getParameter( "username" );
        String pwd=request.getParameter( "password" );
        if(name.equals( "zs" )&&pwd.equals( "abc" )){
            request.getRequestDispatcher( "success.jsp" ).forward( request,response );
            //可以获取到数据,并且地址栏没有改变(任然保留转发时的地址)
        }else{
            out.print( "登陆失败" );
        }
    %>
</body>
</html>

ここに画像を挿入説明
リダイレクト

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>show</title>
</head>
<body>
    <%
        //设置编码
        request.setCharacterEncoding( "UTF-8" );
        String name=request.getParameter( "username" );
        String pwd=request.getParameter( "password" );
        if(name.equals( "zs" )&&pwd.equals( "abc" )){
            response.sendRedirect( "success.jsp" );       //重定向会导致数据丢失
		}else{
            out.print( "登陆失败" );
        }
    %>
</body>
</html>

ここに画像を挿入説明
![

転送とリダイレクトの違い
要求の転送 リダイレクト
アドレスバーを変更するかどうか 変わりません 変更
データを保持するかどうかをするときの最初のリクエスト 保持 保持されていません
リクエストの数 1 2
ジャンプ位置が発生します サーバー 2番目のクライアントは、ジャンプを作ります

(https://img-blog.csdnimg.cn/20200313174522838.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1Y2FuMTIzNA==,size_16,color_FFFFFF,t_70)

セッション

クッキー(クライアントは、組み込みのオブジェクトではありません):
 クッキー:キー=値は
 、内蔵されていないオブジェクトによって提供されたパケットjava.servlet.http.Cookie Javaの

 従来の方法の
 パブリッククッキー(文字列のキー、文字列値 ) コンストラクタ
 文字列のgetName();名前取得
 値取得し、文字列のgetValue()を
 (秒)セット期間、無効setMaxAge(int型の有効期限を)



 サーバによって生成されたクッキー、その後、保存されたクライアントに送信されます。役割のローカルキャッシュに相当
 な訪問、クライアントがクッキーを生成し、最初の訪問は、クライアントに送信され、2番目の訪問は、それは非常に高速です。
 サーバーは、クライアントプロセスに送信する
  クライアント準備クッキーです:respond.addCookie(クッキークッキー);
  ページジャンプ(前方、リダイレクト);
  クライアントの取得クッキー:要求。getCookie();
 注:。サーバクッキー増加:レスポンスオブジェクトを、クライアントがオブジェクトを取得し、要求がオブジェクト
     Bを。直接ではなく、特定のオブジェクト、過去に一度だけクッキーを全て取得する
  利点を:アクセス速度が、貧困層のセキュリティを向上させます。
  短所:貧しいセキュリティ(パスワードなど)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>show</title>
</head>
<body>
    <%
        Cookie cookie1=new Cookie( "name","b" );
        Cookie cookie2=new Cookie( "password","34" );
        response.addCookie( cookie1 );
        response.addCookie( cookie2 );
        //页面跳转到客户端
        response.sendRedirect( "result.jsp" );
    %>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Cookie[] cookies=request.getCookies();
        for(Cookie cookie:cookies){
            out.print(cookie.getName()+"--"+cookie.getValue()+"<br>");
        }
    %>
</body>
</html>

結果を表示
ここに画像を挿入説明
ビューコンソールは、オブジェクトのクッキーの独自のセットに加えて、クッキーのJSESSIONIDの名前があり、F12によって発見しました


クッキーは、自動保存のユーザー名を使用します。

index.jspの

<%@ page contentType="text/html;charset=UTF-8" language="java"
    import="java.util.Date" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <%!
        String name;
    %>
    <%
        Cookie[] cookies=request.getCookies();
        for(Cookie cookie:cookies){
            if(cookie.getName().equals( "name" )){
                name=cookie.getValue();
            }
        }
    %>
  <form action="show.jsp" method="post">
      用户名:<input type="text" name="username" value="<%=(name==null?"":name)%>"/><br/>		
      //这里有个等式表达式包括三目运算符的地方,需要注意
      密码:<input type="password" name="password"/><br/>
      <input type="submit" value=登录>
  </form>
  </body>
</html>

show.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>show</title>
</head>
<body>
    <%
    	//将相关信息存放到cookies中
        request.setCharacterEncoding( "utf-8" );
        String name=request.getParameter( "username" );
        String password=request.getParameter( "password" );
        Cookie cookie_name=new Cookie( "name",name );
        response.addCookie( cookie_name );
    %>
</body>
</html>

  ブラウザへの最初の時間は、ユーザ名は空白ですが、エントリの二回目は、自動的に最初に入力したユーザ名を表示します

セッション(セッション)

  近くにショッピング-スタート:セッションシリーズから撤退することですブラウズ- -お支払いをウェブサイトをご覧ください
:セッションメカニズム
 、サーバーへのクライアントの最初の要求は、サーバーがセッションオブジェクト(顧客情報を保存するユーザー)を生成
 し、各セッションオブジェクトは、一意のセッションID(他のセッションからそれを区別するために使用される)が存在するであろう
 、同時にクライアントに、サーバ応答サーバは、クッキーを生成し、クッキー名= JSESSIONID、値=値セッションIDサーバ、そのため、クライアントは、クッキーができ、1サーバーのセッション(JSESSIONIDセッションIDに対応する)、これまでのところ、クライアントがクッキー(JSESSIONID)を持つことになります、クライアントにクッキーを送信
 要求した後、クライアントに基づくサーバーマッチ(とJSESSIONIDセッションIDのセッションクッキー)場合、セッションマッチングセッションIDのJSESSIONIDの終わりにサービスを提供するためにクッキーはユーザーがログインせずに、最初の訪問ではありませんについて説明します。


一般的に使用される方法:
  文字列geiId(); // GETセッションID
  ブールIsNew(); //新しいユーザー(初診)であるかどうかを判断する
  (無効化を無効); //セッション失敗;(ログインキャンセル)
  のsetAttribute() ;
  のgetAttribute();
  ボイドsetMaxInactiveInterval(); //最大有効非アクティブ時間を設定(秒)
  int型getMaxInactiveInterval(); //非アクティブの最大有効期間を取得





ユーザ名の取得するためにセッションを使用して、ケースを
index.jspのを

<%@ page contentType="text/html;charset=UTF-8" language="java"
    import="java.util.Date" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>

  <form action="check.jsp" method="post">
      用户名:<input type="text" name="username" /><br/>
      密码:<input type="password" name="password"/><br/>
      <input type="submit" value=登录>
  </form>
  </body>
</html>

check.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setCharacterEncoding( "utf-8" );
        String name=request.getParameter( "username" );
        String password=request.getParameter( "password" );
        if(name.equals( "zs" )&&password.equals( "abc" )){
            //只有登录成功session中才会存在username和password
            session.setAttribute( "username",name );
            session.setAttribute( "password",password );
            request.getRequestDispatcher( "sessionDemo.jsp" ).forward( request,response );
        }else {
            response.sendRedirect( "index.jsp" );
        }
    %>
</body>
</html>

sessionDeom.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    欢迎你:
    <%
        String name= (String) session.getAttribute( "username" );
        //如果用户没有登陆,直接访问sessionDemo.jsp则必然获得name==null
        if(name!=null){
            out.print( name );
        }else{
            response.sendRedirect( "index.jsp" );
        }
    %>
</body>
</html>
公開された11元の記事 ウォンの賞賛0 ビュー164

おすすめ

転載: blog.csdn.net/yucan1234/article/details/104845783