校驗,是保證應用程序「入口乾淨」的基本手段,「地溝油,奶粉」,在這裏不該該被放行。html
客戶端校驗是程序開始校驗的起點(詳見個人博客),此處咱們討論服務器端的校驗方法,這是進行程序的最後關口,若是此關把不住,對應用的影響會是致命的。java
作事情總須要一個「套路」,才能夠基本上符合質量的要求。如下我總結一下在Servlet中進行校驗的基本模板:服務器
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean passed=true;//表示校驗是否經過 String page="suc.jsp";//成功頁面 //數據的接收 String uname=request.getParameter("uname"); String sa=request.getParameter("salary"); String email=request.getParameter("email"); String idcard=request.getParameter("idcard"); String sbirth=request.getParameter("birth"); //轉換類型 float salary=-1; Date birth=null; try{ salary=Float.parseFloat(sa); } catch (Exception e) { //轉換失敗,進入到此處,salary將維持-1的值 } try{ SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd"); birth=sd.parse(sbirth); } catch (Exception e) { //轉換失敗,進入到此處,birth將維持null的值 } //以上兩處異常,會幫助咱們作校驗,省事了吧。。。 //校驗 開始 if(uname.trim().length()<=3){ passed=false; request.setAttribute("uname_error", "用戶名必須大於三位"); } if(salary<0){ passed=false; request.setAttribute("salary_error", "請輸入合法數值"); } if(!email.matches(".+@.+\\..+")){ passed=false; request.setAttribute("email_error", "請輸入合法郵箱"); } if(!idcard.matches("^\\d{4}[\\d|x|X]$")){ passed=false; request.setAttribute("idcard_error", "請輸入×××號"); } if(birth==null){ passed=false; request.setAttribute("birth_error", "請輸入正確的日期"); } if(passed){//校驗經過,正常調用業務 //封裝 User u = new User(); u.setUname(uname); //業務調用 //業務數據傳遞 //跳轉 } else{ page="index.jsp";//校驗未經過時,轉向到輸入頁面 } request.getRequestDispatcher(page).forward(request, response); }
JSP中的代碼模板,以下:jsp
<form action="regist" method="post"> 用戶名:<input type="text" name="uname" value="${param.uname }"/><span>${uname_error}</span><br/> 工資:<input type="text" name="salary" value="${param.salary}"/><span>${salary_error}</span><br/> 電郵:<input type="text" name="email" value="${param.email}"/><span>${email_error}</span><br/> ×××號:<input type="text" name="idcard" value="${param.idcard}"/><span>${idcard_error}</span><br/> 出生日期:<input type="text" name="birth" value="${param.birth}"/><span>${birth_error}</span><br/> <input type="submit"/> </form>
不足之處:編碼量過大,難對提升效率和質量,在Struts2中,對代碼作了大量的改進,詳見個人後續博文。
ide