JSP應用的自我理解之三:JSP+Servlet實現表單驗證

來源:互聯網
上載者:User

樣本說明:通過一個表單提交頁面提交給Servlet,Servlet擷取資訊,經過處理後,將資訊存入request對象中,如果使用者提交姓名為空白,將重新返回登入首頁,否則,把提交的資訊全部顯示出來

下面具體實現了~~

1、建立一個Dynamic WEB工程,名為formtt



2、建立一個登入介面index.jsp,完成登入介面的編寫,具體代碼如下:

<%@ page language="java" contentType="text/html; charset=GBK"    pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>表單提交</title></head><body><br/><form id="form1" name="form1" method="post" action="test">  <p align="center"><strong>表單提交</strong></p>  <table width="331" height="147" border="1" align="center" cellpadding="0" cellspacing="0">    <tr>      <td width="76" height="35">username:</td>      <td width="183"><label>        <input type="text" name="name" id="textfield"  height="20"/>      </label></td>      <td width="50"> </td>    </tr>    <tr>      <td>sex:</td>      <td><input type="radio" name="sex" value="boy"/>boy<input type="radio" name="sex"  value="girl"/>girl</td>      <td> </td>    </tr>    <tr>      <td>address:</td>      <td><input type="text" name="address" id="textfield3" height="20"/></td>      <td> </td>    </tr>    <tr>      <td>likes:</td>      <td><label>      <input type="checkbox" name="likes" id="checkbox" value="sing" />sing      <input type="checkbox" name="likes" id="checkbox2"  value="dance"/>dance      <input type="checkbox" name="likes" id="checkbox3"   value="game"/>game      </label></td>      <td> </td>    </tr>    <tr>      <td> </td>      <td><input name="" type="submit" value="submit" />      <input name="" type="reset" value="reset" /></td>      <td> </td>    </tr>  </table></form></body></html>
具體的介面如下:



3、在伺服器端建立一個包org.luojs.servlet,然後在該包下建立一個TestServlet的Java類,完成伺服器端對錶單的處理

具體代碼如下:

package org.luojs.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TestServlet extends HttpServlet{public void destroy() {super.destroy();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 擷取表單資訊String name = request.getParameter("name");String sex = request.getParameter("sex");String address = request.getParameter("address");String[] likes = request.getParameterValues("likes");String URL = "index.jsp";String likes2 = "";if (null != likes) {for (String string : likes) {likes2 += string + "  ";}}if (null != name && !name.equals("")) {// 把從頁面擷取的內容放入request中request.setAttribute("name", name);request.setAttribute("sex", sex);request.setAttribute("address", address);request.setAttribute("likes", likes2);URL = "result.jsp";}request.getRequestDispatcher(URL).forward(request, response);}public void init() throws ServletException {}}

4、配置web.xml檔案

<?xml version="1.0" encoding="UTF-8"?><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_3_0.xsd"  version="3.0"  metadata-complete="true">    <!-- 註冊servlet資訊 -->  <servlet>  <servlet-name>TestServlet</servlet-name>  <servlet-class>org.luojs.servlet.TestServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>TestServlet</servlet-name>  <url-pattern>/test</url-pattern>  </servlet-mapping>  <welcome-file-list>  <welcome-file>index.jsp</welcome-file>  </welcome-file-list> </web-app>

5、跑一跑試試看,發現還行,


但輸入中文文字時,出現的是亂碼



所以,你要用filter監聽器技術來實現中文亂碼解決的問題~~

(1)在org.luojs.servlet包下建立一個CharaterEncoding的Java類,具體代碼如下:

package org.luojs.servlet;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class CharacterEncoding implements Filter{private FilterConfig config;//此filter被釋放時的回調方法public void destroy() {}//主要做過濾工作的方法//FilterChain用於調用過濾器鏈中的下一個過濾器public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {//擷取此Filter的初始參數的值String encoding = config.getInitParameter("encoding");if(null != encoding && !"".equals(encoding)){request.setCharacterEncoding(encoding);  //佈建要求資料的編碼方式}         //把請求和響應對象傳給過濾鏈中的下一個要調用的過濾器或Sevletchain.doFilter(request, response);}//些filter初始化時的回調方法//FilterConfig介面執行個體中封裝了這個Filter的初始化參數public void init(FilterConfig config) throws ServletException {this.config = config;}}

(2)在web.xml中加入如下代碼:

  <!-- 解決中文亂碼問題 -->  <filter>  <filter-name>CharacterEncoding</filter-name>  <filter-class>org.luojs.servlet.CharacterEncoding</filter-class>  <init-param>  <param-name>encoding</param-name>  <param-value>GBK</param-value>  </init-param>  </filter><filter-mapping><filter-name>CharacterEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>

然後,你再跑跑,看到中文字元了,差不多了~~



參考書目:《JSP基礎與案例開發詳解》,清華大學出版社

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.