<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 36, comments - 30, trackbacks - 0, articles - 3

    nginx tomcat環境session不共享場景

    Posted on 2016-01-28 20:13 笑看人生 閱讀(3283) 評論(0)  編輯  收藏 所屬分類: Web開發技術
    @import url(http://m.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 參照一下地址,搭建nginx tomcat的負載均衡環境

    新建一個簡單的web應用,實現簡單的登陸過程


    User java bean

     1 package com.xxx.yyy.entity;
     2 
     3 public class User {
     4     
     5     private String username;
     6     private String password;
     7     
     8     public String getUsername() {
     9         return username;
    10     }
    11     public void setUsername(String username) {
    12         this.username = username;
    13     }
    14     public String getPassword() {
    15         return password;
    16     }
    17     public void setPassword(String password) {
    18         this.password = password;
    19     }
    20         
    21 }
    22 


    登錄Servlet


     1 package com.xxx.yyy.servlet;
     2 
     3 import java.io.IOException;
     4 import javax.servlet.annotation.WebServlet;
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 import javax.servlet.http.HttpSession;
    10 
    11 import com.xxx.yyy.entity.User;
    12 @WebServlet(name = "LoginServlet", urlPatterns = "/login.do")
    13 public class LoginServlet extends HttpServlet {
    14 
    15     @Override
    16     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    17             throws ServletException, IOException {
    18         
    19         
    20         String username = req.getParameter("username");
    21         String password = req.getParameter("password");
    22         
    23         User user = new User();
    24         user.setUsername(username.trim());
    25         user.setPassword(password.trim());
    26 
    27         if("root".equals(user.getUsername())&& "admin".equals(user.getPassword())) {
    28              HttpSession session = req.getSession();
    29              session.setAttribute("user", user);
    30             resp.sendRedirect("success.jsp");
    31         } else {
    32             resp.sendRedirect("failure.jsp");
    33         }
    34     }
    35 
    36 }
    37 


    登錄頁面index.jsp

     1 <%@ page language="java" contentType="text/html; charset=windows-31j"
     2     pageEncoding="windows-31j"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
     7 <title>Login Page</title>
     8 </head>
     9 <body>
    10     <form action="login.do" method="post">
    11     User Name:<input type="text" name="username"><br>
    12     Password:<input type="password" name="password"><br>
    13     <input type="submit">
    14     </form>
    15 </body>
    16 </html>
    17 


    登錄成功后,顯示的頁面 success.jsp

     1 <%@ page language="java" contentType="text/html; charset=windows-31j"
     2     pageEncoding="windows-31j"%>
     3 
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
     8 <title>Login Success Page</title>
     9 </head>
    10 <body>
    11 Login Success<br>
    12     
    13         
    14     
    15     Username:${sessionScope["user"].username}
    16      <br>
    17     Password:${sessionScope["user"].username}
    18 
    19 </body>
    20 </html>
    21 


    登錄失敗后,顯示的頁面 failure.jsp

      1 <%@ page language="java" contentType="text/html; charset=windows-31j"

     2     pageEncoding="windows-31j"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
     7 <title>Login Failure Page</title>
     8 </head>
     9 <body>
    10 Login Failure
    11 </body>
    12 </html>
    13 


    Web應用新建完了之后,需要修改nginx.conf文件,修正內容如下:

    location ~ \.(jsp|do)$ { 

                proxy_pass http://local_tomcats;

                #root   html;

                #index  index.html index.htm;

            }

     

    由于我們servleturl是以.do結尾的,因此所有以.do結尾的請求都轉給Tomcat處理。

    修正之后運行nginx -s reload,重新加載配置文件

    實際運行效果如下:



    點擊“提交”按鈕,顯示如下頁面



    提示在success.jsp15行拋空指針異常。即如下代碼:

    Username:<%= user.getUsername()%>

     

    session對象中取出的usernull,為什么會出現這種情況。因為session對象是保存在tomcat服務器上的,session在兩臺tomcat之間沒有共享,導致了生成包含user對象的session在一臺服務器上,而獲取的session并不是包含user對象的session。訪問兩臺Tomcat的權重是一樣的

             server localhost:8080 weight=1;

        server localhost:18080 weight=1;

    為了解決上面的問題,只是簡單修正一下nginx.conf文件,修正內容如下:


           #server localhost:8080 weight=1;

           #server localhost:18080 weight=1;

     

            server localhost:8080;

            server localhost:18080;

       ip_hash;

    修正之后運行nginx -s reload,重新加載配置文件

    實際運行效果如下:


    # nginx中的ip_hash將某個ip求定向到同一臺后端,這樣一來ip下的某個客端和某個后端就能建立起固的session


    當然解決session共享問題,還可以通過memcache來解決,后續文章會詳細介紹。














    主站蜘蛛池模板: 国产精品免费视频网站| 久操视频在线免费观看| 亚洲av成本人无码网站| 亚洲色无码专区一区| 亚洲一区二区三区免费观看| 亚洲精品在线免费看| 亚洲精品国产第1页| 亚洲免费福利视频| 亚洲欧洲国产综合AV无码久久| 中文有码亚洲制服av片| 亚洲av中文无码乱人伦在线观看| 亚洲人成网站在线在线观看| 亚洲国产精品美女久久久久| 国产精品亚洲一区二区无码| 免费高清A级毛片在线播放| 成年免费a级毛片| a级毛片在线视频免费观看| 久久青草免费91观看| 在免费jizzjizz在线播| 7723日本高清完整版免费| 成人免费福利电影| 四虎影视永久免费观看网址| 亚洲精品尤物yw在线影院| 亚洲人成网77777亚洲色| 亚洲爱情岛论坛永久| 亚洲成人福利网站| 久久亚洲AV成人无码国产电影 | 亚洲AV无码成人精品区大在线| 4338×亚洲全国最大色成网站| 国产精品国产亚洲精品看不卡| 亚洲欧洲日韩在线电影| 在线精品亚洲一区二区| 色老头综合免费视频| 美女视频黄的免费视频网页| 免费精品国产日韩热久久| 国产jizzjizz免费看jizz| 亚洲欧洲无码AV电影在线观看| 亚洲美女大bbbbbbbbb| 亚洲精品中文字幕| 韩日电影在线播放免费版| 久久精品免费一区二区|