1. 程式人生 > >Java Web開發 基於HttpServlet的使用者登入網站 例項

Java Web開發 基於HttpServlet的使用者登入網站 例項

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

      一個簡單的小例子,基於httpservlet的使用者登入(雜家是菜鳥剛接觸javaee,只能從最簡單出發了),首先看業務邏輯:

有三個檔案組成,分別是登入、驗證和歡迎介面。要達到的目標是:

下圖是HttpServlet處理doGet和doPost請求的異同:

廢話不說了,先看原始碼:

第一:Login.java

//登陸介面package yan.guoqi;import javax.servlet.http.*;import java.io.*;public class Login extends HttpServlet{  public void doGet(HttpServletRequest req, HttpServletResponse res)//業務邏輯 try{  //中文亂碼解決
  res.setContentType("text/html;charset=gbk");  PrintWriter pw = res.getWriter();    //返回登陸頁面  pw.println("<html>");  pw.println("<body>");  pw.println("<h1>登陸介面</h1>");  pw.println("<form action=logincl method=post>"
);  pw.println("使用者名稱:<input type=text name=username><br>");  pw.println("密碼:<input type=password name=passwd><br>");  pw.println("<input type=submit value=登陸><br>");  pw.println("</form>");  pw.println("<body/>");  pw.println("<html/>"); } catch(Exception ex){  ex.printStackTrace(); }    }  public void doPost(HttpServletRequest req, HttpServletResponse res){    this.doGet(req, res); }}


第二:LoginCL.java,驗證使用者名稱和密碼是否正確

//使用者驗證servletpackage yan.guoqi;import javax.servlet.http.*;import java.io.*;public class LoginCL extends HttpServlet{  public void doGet(HttpServletRequest req, HttpServletResponse res)//業務邏輯 try//接受使用者名稱和密碼 String u = req.getParameter("username"); String p = req.getParameter("passwd"); //驗證 if(u.equals("yan") && p.equals("yan")){  //合法  //跳轉到welcome     res.sendRedirect("wel");   } else{  //不合法  //跳轉  res.sendRedirect("login");//你要跳轉的servlet的url }    } catch(Exception ex){  ex.printStackTrace(); }    }  public void doPost(HttpServletRequest req, HttpServletResponse res){    this.doGet(req, res); }}


第三:Wel.java 如果驗證成功,顯示歡迎介面

 //歡迎介面   package yan.guoqi;  import javax.servlet.http.*;  import java.io.*;   public class Wel extends HttpServlet{    public void doGet(HttpServletRequest req, HttpServletResponse res){  //業務邏輯  try{   res.setContentType("text/html;charset=gbk");   PrintWriter pw = res.getWriter();      pw.println("Welcome,恭喜您,已成功登陸!");      }  catch(Exception ex){   ex.printStackTrace();  }       }    public void doPost(HttpServletRequest req, HttpServletResponse res){      this.doGet(req, res);  } }

第四web.xml檔案:

<?xml version="1.0" encoding="UTF-8"?><!-- ISO-8859-1 --><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor  license agreements. See the NOTICE file distributed with this work for additional  information regarding copyright ownership. The ASF licenses this file to  You under the Apache License, Version 2.0 (the "License"); you may not use  this file except in compliance with the License. You may obtain a copy of  the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required  by applicable law or agreed to in writing, software distributed under the  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS  OF ANY KIND, either express or implied. See the License for the specific  language governing permissions and limitations under the License. --><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Welcome to Tomcat</display-name> <description>     Welcome to Tomcat  </description> <servlet>  <!--給survlet起個名字,可以是任意的 -->  <servlet-name>login</servlet-name>  <!--servlet的路徑(包名+類名) -->  <servlet-class>yan.guoqi.Login</servlet-class> </servlet> <servlet-mapping>  <!-- servlet的名字和上面保持統一 -->  <servlet-name>login</servlet-name>  <!-- 這是在瀏覽器中輸入的訪問該survlet的url,任意的 -->  <url-pattern>/login</url-pattern> </servlet-mapping> <servlet>  <!--給survlet起個名字,可以是任意的 -->  <servlet-name>logincl</servlet-name>  <!--servlet的路徑(包名+類名) -->  <servlet-class>yan.guoqi.LoginCL</servlet-class> </servlet> <servlet-mapping>  <!-- servlet的名字和上面保持統一 -->  <servlet-name>logincl</servlet-name>  <!-- 這是在瀏覽器中輸入的訪問該survlet的url,任意的 -->  <url-pattern>/logincl</url-pattern> </servlet-mapping> <servlet>  <!--給survlet起個名字,可以是任意的 -->  <servlet-name>wel</servlet-name>  <!--servlet的路徑(包名+類名) -->  <servlet-class>yan.guoqi.Wel</servlet-class> </servlet> <servlet-mapping>  <!-- servlet的名字和上面保持統一 -->  <servlet-name>wel</servlet-name>  <!-- 這是在瀏覽器中輸入的訪問該survlet的url,任意的 -->  <url-pattern>/wel</url-pattern> </servlet-mapping></web-app>

總結知識點:

1,頁面的跳轉用res.sendRedirect("xxx")來實現,xxx是xml檔案裡要跳轉的servlet對應的url名字。

2,接收使用者名稱和密碼用String u = req.getParameter("username");還實現。其中的username是pw.println("使用者名稱:<input type=text name=username><br>");這裡對應的名字。

3,servlet裡嵌入html語言。比如Login.java裡的下面語句:

pw.println("<html>");  pw.println("<body>");  pw.println("<h1>登陸介面</h1>");  pw.println("<form action=logincl method=post>");  pw.println("使用者名稱:<input type=text name=username><br>");  pw.println("密碼:<input type=password name=passwd><br>");  pw.println("<input type=submit value=登陸><br>");  pw.println("</form>");  pw.println("<body/>");  pw.println("<html/>");


看來還要學習下html語言啊!

4,servlet解決中文亂碼的方法:

res.setContentType("text/html;charset=gbk");

5,每個.java檔案都要編譯。對應的servlet檔案在web.xml檔案裡都要配置註冊下,這點很像android開發的Manifinest.xml檔案。每次更改.java檔案時,按韓順平老師的講解是reload一下。但有時候reload一下不中,把tomcat關閉重新開,瀏覽器關閉再輸入網址開啟,這樣才看到更改後的效果。

-----------------------------下次這個驗證模組要連上資料庫,這個算小demo吧!大牛就別看原始碼了。Java web長路漫漫啊。。。。大哭

原始碼:http://download.csdn.net/detail/yanzi1225627/5053157  下載後參照http://blog.csdn.net/yanzi1225627/article/details/8564455在相應位置新建資料夾,對應的檔案放進去。


 

 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述