學生信息管理系統----創建項目及驗證碼生成

創建項目

  打開eclipse,創建一個空的項目:
  依次進行:File–>New–>Dynamic web project,出現以下彈窗。
在這裏插入圖片描述
  輸入項目名稱StudentManagerWeb,一直next,到了創建項目的最後一步在這裏打上勾,點擊Finish。
在這裏插入圖片描述
  項目結構如下:
      在這裏插入圖片描述
src:java文件
WebContent:存放前端的目錄,如CSS文件,JS,JSP文件等。
lib:存放jar文件。

導入網頁模板

  將素材解壓,將easyuih-uiindex.jsp複製到WebContent目錄下。其中index.jsp是網頁打開默認訪問的頁面。打開之後可以看到這樣的一句代碼:

<jsp:forward page="/WEB-INF/view/login.jsp"></jsp:forward>

  即訪問到這個index.jsp之後,會重定向到view/login.jsp頁面。

  爲什麼會默認訪問到index.jsp呢?
  我們可以打開WEB-INF目錄下的web.xml,裏面內容爲:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>StudentManagerWeb</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

  表示WebContent目錄下,如果存在index.html,啓動之後,那麼就會優先訪問index.html頁面,是按照從上到下的順序來進行訪問,在我們的案例中,文件夾下不存在index.htmlindex.htm,所以默認訪問的頁面是目錄中存在的index.jsp頁面。若都沒有這些文件,那麼在訪問時會報一個404的錯誤。
  因爲用不着上面的部分代碼,我們可以只保留一行,web.xml內部就只有以下這些了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>StudentManagerWeb</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

  因爲view目錄下並沒有login.jsp,所以我們需要創建一個jsp文件。
在這裏插入圖片描述
  創建完成之後,我們在這個jspbody中輸入hello world 來驗證。

  右擊項目名稱,選擇Debug As ,選擇第一項Debug on server,等待項目發佈。
  此時發佈之後,會在瀏覽器中顯示剛剛body中的信息。
在這裏插入圖片描述

  接下來將模板複製到login.jsp
  打開素材WEB-INF文件夾下的view,將login.jsp的內容拷貝到我們所創建的login.jsp的文件中。
  刷新瀏覽器可以看到這樣的頁面。
在這裏插入圖片描述

點擊圖片實現驗證碼的切換

  需要實現一個servlet的流程,即將用戶行爲傳遞到服務器,服務器對此行爲作出一個響應。

  • 創建包:com.ischoolbar.programmer.servlet
  • 創建Servlet類:CpachaServlet,此類要繼承HttpServlet
  • web.xml中配置
<servlet>
  	<description>驗證碼</description>
  	<servlet-name>CpachaServlet</servlet-name>
  	<servlet-class>com.ischoolbar.programmer.servlet.CpachaServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>CpachaServlet</servlet-name>
  	<url-pattern>/CpachaServlet</url-pattern>
  </servlet-mapping>
  • <servlet>標籤
  • <description>標籤
  • <servlet-name>標籤
  • <servlet-class>標籤
  • <servlet-mapping>標籤
  • <url-pattern>標籤

  注意:<servlet>標籤<servlet-mapping>標籤要成對存在。

  配置好之後,我們之後在瀏覽器中訪問/CpachaServlet時,所有的請求都會對應到com.ischoolbar.programmer.servlet.CpachaServlet來進行響應。

  (1)測試CpachaServlet能否正常工作

public class CpachaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException{
		res.getWriter().write("hello world");
	}
}
  • HttpServletRequest request
  • HttpServletResponse response

  測試一下:
  啓動項目後,進入了默認的頁面,我們在狀態欄的後面加上CpachaServlet,即我們在web.xml中的servlet中配置的訪問路徑,回車進行訪問,可以在頁面上看到:
    在這裏插入圖片描述
  說明我們已經可以訪問CpachaServlet了。
  用戶通過訪問路徑,通過配置文件將用戶請求轉送到了servlet文件裏面,這個servlet接收到請求之後做出了一個迴應,並輸出在了瀏覽器頁面中。

  (2)CpachaServlet代碼完善
  下面對代碼再做一些修改:

public class CpachaServlet extends HttpServlet {
	private static final long serialVersionUID = 3198908369323678077L;
	public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException{
		doPost(req,res);
	}	
	public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException{
		res.getWriter().write("hello world");
	}
}
  • doPost
    get

  • doGet
    post

  以上代碼是在doGet方法中調用了doPost方法,所以不論用什麼方法進行提交,都能夠進入到doPost方法中。

  考慮到代碼的複用性,我們接下來定義一個工具類,用於生成驗證碼:
先定義一個名爲com.ischoolbar.programmer.utilpackage,再定義一個名爲CpachaUtil的工具類。

  (3)實現驗證碼功能
   ① Java代碼:
  回到CpachaServlet,核心代碼如下:

public class CpachaServlet extends HttpServlet {

	private static final long serialVersionUID = 3198908369323678077L;
	public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException{
		doPost(req,res);
	}
	public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException{
		String method = req.getParameter("method");
		if("loginCapcha".equals(method)){
			generateLoginCpacha(req, res);
			return;
		}
		res.getWriter().write("error method");
	}
	private void generateLoginCpacha(HttpServletRequest req,HttpServletResponse res) throws IOException{
		CpachaUtil cpachaUtil = new CpachaUtil();
		String generatorVCode = cpachaUtil.generatorVCode();
		// 創建的驗證碼,快速寫到
		req.getSession().setAttribute("loginCapcha", generatorVCode);
		BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true);
		ImageIO.write(generatorRotateVCodeImage,"gif",res.getOutputStream());
	}

②修改前端部分代碼
  回到login.jsp,其中有兩個部分與驗證碼相關。

  • 一個是驗證碼的點擊事件要觸發CpachaServlet
  • 二是將請求發送到CpachaServlet
<!--html 代碼 -->
<div class="row cl">
     <div class="formControls col-8 col-offset-3">
          <input class="input-text size-L" name="vcode" type="text" placeholder="請輸入驗證碼" style="width: 200px;">
          <img title="點擊圖片切換驗證碼" id="vcodeImg" src="CpachaServlet?method=loginCapcha">
     </div>
</div>
// JS代碼
	$(function(){
		//點擊圖片切換驗證碼
		$("#vcodeImg").click(function(){
			this.src="CpachaServlet?method=loginCapcha&t="+new Date().getTime();
		});
	}

  這裏的點擊事件要觸發,觸發所指向的地址是CpachaServlet,因爲我們要在這個Servlet中去處理請求。第二點,因爲在CpachaServletString method = req.getParameter("method");一行用於獲取請求中所攜帶的參數,就是這裏的loginCapcha,用於判定這條請求是不是用來生成驗證碼的請求,如果是,就生成驗證碼並返回給前端頁面。

修改之後進行保存,運行項目,可以看到驗證碼已經生成了。
在這裏插入圖片描述

web.xml其他的一些配置

  所有的servlet都需要在web.xml進行配置才能夠使用。我們先打開web.xml進行配置,默認的404頁面不好看,我們 可以先設置一下。
  打開web.xml<web-app>的標籤內添加以下代碼:

  <error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
  </error-page>
   <error-page>
    <error-code>500</error-code>
    <location>/500.jsp</location>
  </error-page>

  error-page:第一個指的是一旦發生了404錯誤,那麼就跳轉到404.jsp頁面。第二個指的是發生了關於數據庫的錯誤,就跳轉到505.jsp頁面。好看的頁面可以提升用戶體驗。

  servlet 代表着業務邏輯的控制器。

 <servlet>
    <description>登錄</description>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.lizhou.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>

servlet-name:表示servlet的名字是什麼。
servlet-classservlet所對應的java類是哪一個。
servlet-mapping:表示servlet的映射。
url-pattern:表示該servlet所對應的web訪問路徑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章