基于Struts+Spring+JDBC架构的课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
实训教学示例项目——《网上银行账户管理系统》——分离Servlet类中的数据验证逻辑与业务调度逻辑
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上
银行账户管理系统》——分离Servlet类中的数据验证逻辑与业务
调度逻辑
1.1.1 分离前台用户信息/帐户信息管理的Servlet类中的数据验证逻辑与业务调度逻辑 1、添加一个针对所有的Servlet类中的方法验证的过滤器组件基类
(1)类名称为CheckAllWebFormBaseFilter、包名称为com.px1987.webbank.filter、实现javax.servlet.Filter接口
(2)编程该CheckAllWebFormBaseFilter类以提供共性的功能实现
杨教授大学堂,版权所有,盗版必究。 1/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
package com.px1987.webbank.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;
import com.px1987.webbank.config.TargetPageNameConfig; //该Filter组件是为J2EE Web 提供的基类Filter
public class CheckAllWebFormBaseFilter implements Filter {
protected String checkAllWebFormBaseFilter_errorInfoTargetPage=null;
RequestDispatcher oneRequestDispatcher=null;
HttpSession session=null;
String verifyCodeInSession=null;
public CheckAllWebFormBaseFilter() {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
杨教授大学堂,版权所有,盗版必究。 2/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
request.setCharacterEncoding("GBK");
session=((HttpServletRequest)request).getSession();
verifyCodeInSession=(String)session.getAttribute("verifyCode");
return;
}
public void init(FilterConfig arg0) throws ServletException {
checkAllWebFormBaseFilter_errorInfoTargetPage=
TargetPageNameConfig.getProperty("allWebFormBaseFilter_errorInfoTargetPage");
}
}
(3)在allTargetPageConfig.properties文件中定义一个属性项目
checkAllWebFormBaseFilter.errorInfoTargetPage=/J2EEWeb/errorDeal/showWebAppErrorAndReturn.jsp
2、添加一个针对UserInfoManageServlet类中的各个方法验证的过滤器(/
userInfoManageAction.action)
(1)类名称为FormRequestTransferCoding、包名称为com.px1987.webbank.filter、继
承前面的CheckAllWebFormBaseFilter类
杨教授大学堂,版权所有,盗版必究。 3/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
(2)编程该FormRequestTransferCoding类
package com.px1987.webbank.filter; import java.io.IOException;
import java.util.Date;
import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;
杨教授大学堂,版权所有,盗版必究。 4/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
import org.apache.commons.validator.GenericValidator; import com.px1987.webbank.config.TargetPageNameConfig; import com.px1987.webbank.exception.WebBankException; import com.px1987.webbank.model.vo.AccountInfoVO; import com.px1987.webbank.util.MD5JavaBean; public class FormRequestTransferCoding extends CheckAllWebFormBaseFilter {
public FormRequestTransferCoding() {
super();
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
super.doFilter(request, response, filterChain);
boolean checkResult=true;
String action=request.getParameter("action"); // ************下面是获得请求的类型并相应地跳转到目标处理方法中********
if(action.equals("doUserLogin")){
checkResult=checkDoUserLoginForm(request);
}
else if(action.equals("doGetPassWord")){
checkResult=checkDoGetPassWordForm(request);
}
else if(action.equals("doGetUserPassWordAndUpdate")){
checkResult=checkDoGetUserPassWordAndUpdateForm(request);
}
else if(action.equals("doUpdateUserPassWord")){
checkResult=checkDoUpdateUserPassWordForm(request);
}
else if(action.equals("doAddNewAccountInfo")){
杨教授大学堂,版权所有,盗版必究。 5/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
checkResult=checkDoAddNewAccountInfoForm(request);
}
if(action.equals("doGetOutMoney")){
checkResult=checkDoGetOutMoneyForm(request);
}
if(action.equals("doTransmitAccount")){
checkResult=checkDoTransmitAccountForm(request);
}
if(!checkResult){
oneRequestDispatcher=request.getRequestDispatcher(checkAllWebFormBaseFilte
r_errorInfoTargetPage);
oneRequestDispatcher.forward(request, response);
return;
}
filterChain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
super.init(arg0);
}
public boolean checkDoAddNewAccountInfoForm(ServletRequest request){ // ************下面为检查验证码是否正确 *********************
String verifyCodeDigitInputed=request.getParameter("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
return false;
}
if(!verifyCodeDigitInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
杨教授大学堂,版权所有,盗版必究。 6/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
return false;
}
String balance=request.getParameter("balance");
if(!GenericValidator.isFloat(balance)){
request.setAttribute("errorText", "存款金额必须为数字!请重新输入您的存款金额!");
return false;
}
String
accountInfo_ActionType=request.getParameter("accountInfo_ActionType");
switch(Integer.parseInt(accountInfo_ActionType)){
case 1: //开设帐户
String idCard=request.getParameter("idCard");
if(Float.parseFloat(balance)<1.0f){
request.setAttribute("errorText", "开户存款金额必须大于1元人民币!请重新输入您的开户存款金额!");
return false;
}
if(GenericValidator.isBlankOrNull(idCard)){
request.setAttribute("errorText", "您的身份证号输入不能为空!请输入您的有效身份证号!");
return false;
}
if(idCard.length()!=18){
request.setAttribute("errorText", "有效身份证号应该是18位数字!请输入您的有效身份证号!");
return false;
}
break;
case 2: //追加存款
杨教授大学堂,版权所有,盗版必究。 7/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
String accountID=request.getParameter("accountID");
if(GenericValidator.isBlankOrNull(accountID)){ //对于选择框,有缺少的选择项目
request.setAttribute("errorText", "请选择您的存款帐号!");
return false;
}
break;
}
return true;
}
public boolean checkDoGetOutMoneyForm(ServletRequest request){
// ********************下面为检查验证码是否正确 ************
String verifyCodeDigitInputed=request.getParameter("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供的6位验证码!");
return false;
}
if(!verifyCodeDigitInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提供的6位验证码~");
return false;
}
String idCard=request.getParameter("idCard");
if(GenericValidator.isBlankOrNull(idCard)){
request.setAttribute("errorText", "您的身份证号输入不能为空!请输入您的有效身份证号!");
return false;
}
if(idCard.length()!=18){
杨教授大学堂,版权所有,盗版必究。 8/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
request.setAttribute("errorText", "有效身份证号应该是18位数字!请输
入您的有效身份证号!");
return false;
}
String accountInfo_ActionType=
request.getParameter("accountInfo_ActionType");
switch(Integer.parseInt(accountInfo_ActionType)){
case 1: //取出款额
String balance=request.getParameter("balance");
if(!GenericValidator.isFloat(balance)){
request.setAttribute("errorText", "取款金额必须为数字!请重新
输入您的取款金额!");
return false;
}
break;
case 2: //销毁帐户
String userPassWord=request.getParameter("userPassWord");
if(GenericValidator.isBlankOrNull(userPassWord)){
request.setAttribute("errorText", "您的帐户密码不能为空!请输
入您的有效帐户密码!");
return false;
}
break;
}
return true;
}
public boolean checkDoTransmitAccountForm(ServletRequest request){
// ********************下面为检查验证码是否正确 ****************
String verifyCodeDigitInputed=request.getParameter("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitInputed)){
杨教授大学堂,版权所有,盗版必究。 9/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
return false;
}
{ if(!verifyCodeDigitInputed.equals(verifyCodeInSession))
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
return false;
}
String balance=request.getParameter("balance");
if(!GenericValidator.isFloat(balance)){
request.setAttribute("errorText", "取款金额必须为数字!请重新输入您的
取款金额!");
return false;
}
return true;
}
public boolean checkDoUserLoginForm(ServletRequest request){
// ********************下面为检查验证码是否正确 *******************
String verifyCodeDigitInputed=request.getParameter("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
return false;
}
if(!verifyCodeDigitInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
return false;
}
杨教授大学堂,版权所有,盗版必究。 10/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
/*
* 下面对用户在登陆
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
单中的输入项目进行服务器端的验证
*/
String userName=request.getParameter("userName");
String userPassWord=
request.getParameter("oneUserPassWordBean.userPassWord");
if(GenericValidator.isBlankOrNull(userName)){
request.setAttribute("errorText", "用户名称不能为空!请输入您的用户名称!");
return false;
}
if(GenericValidator.isBlankOrNull(userPassWord)){ request.setAttribute("errorText", "用户密码名称不能为空!请输入您的用户密码!");
return false;
}
if(!GenericValidator.maxLength(userPassWord, 18)){
request.setAttribute("errorText", "用户密码不能超过18位!");
return false;
}
if(!GenericValidator.minLength(userPassWord, 4)){
request.setAttribute("errorText", "用户密码不能小于4位!");
return false;
}
return true;
}
public boolean checkDoGetPassWordForm(ServletRequest request){
// ********************下面为检查验证码是否正确 ********************
String verifyCodeDigitInputed=request.getParameter("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
杨教授大学堂,版权所有,盗版必究。 11/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
return false;
}
if(!verifyCodeDigitInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
return false;
}
String passWordAsk=
request.getParameter("oneUserPassWordBean.passWordAsk");
String passWordAnswer=
request.getParameter("oneUserPassWordBean.passWordAnswer");
if(GenericValidator.isBlankOrNull(passWordAsk)){
request.setAttribute("errorText", "找回密码时的回答问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
不能为空!");
return false;
}
if(GenericValidator.isBlankOrNull(passWordAnswer)){
request.setAttribute("errorText", "找回密码时的回答问题的
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
不能为
空!");
return false;
}
return true;
}
public boolean checkDoGetUserPassWordAndUpdateForm(ServletRequest request){
String userNewPassWord=
request.getParameter("oneUserPassWordBean.userNewPassWord");
if(GenericValidator.isBlankOrNull(userNewPassWord)){
request.setAttribute("errorText", "用户新密码名称不能为空!请输入您的
用户新密码!");
return false;
}
杨教授大学堂,版权所有,盗版必究。 12/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
if(!GenericValidator.maxLength(userNewPassWord, 18)){
request.setAttribute("errorText", "用户新密码不能超过18位!");
return false;
}
if(!GenericValidator.minLength(userNewPassWord, 4)){
request.setAttribute("errorText", "用户新密码不能小于4位!");
return false;
}
String confirmPassWord=
request.getParameter("oneUserPassWordBean.confirmPassWord");
if(!userNewPassWord.equals(confirmPassWord)){
request.setAttribute("errorText", "确认密码应该与用户新密码保持一
致!");
return false;
}
return true;
}
public boolean checkDoUpdateUserPassWordForm(ServletRequest request){
// ********************下面为检查验证码是否正确 ******************
String verifyCodeDigitInputed=request.getParameter("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
return false;
}
if(!verifyCodeDigitInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
return false;
}
杨教授大学堂,版权所有,盗版必究。 13/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
String userName=request.getParameter("userName");
String userPassWord=
request.getParameter("oneUserPassWordBean.userPassWord");
if(GenericValidator.isBlankOrNull(userName)){
request.setAttribute("errorText", "用户名称不能为空!请输入您的用户名
称!");
return false;
}
if(GenericValidator.isBlankOrNull(userPassWord)){
request.setAttribute("errorText", "用户密码名称不能为空!请输入您的用
户密码!");
return false;
}
if(!GenericValidator.maxLength(userPassWord, 18)){
request.setAttribute("errorText", "用户密码不能超过18位!");
return false;
}
if(!GenericValidator.minLength(userPassWord, 4)){
request.setAttribute("errorText", "用户密码不能小于4位!");
return false;
}
String userNewPassWord=
request.getParameter("oneUserPassWordBean.userNewPassWord");
if(GenericValidator.isBlankOrNull(userNewPassWord)){
request.setAttribute("errorText", "用户新密码名称不能为空!请输入您的
用户新密码!");
return false;
}
if(!GenericValidator.maxLength(userNewPassWord, 18)){
request.setAttribute("errorText", "用户新密码不能超过18位!");
杨教授大学堂,版权所有,盗版必究。 14/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
return false;
}
if(!GenericValidator.minLength(userNewPassWord, 4)){
request.setAttribute("errorText", "用户新密码不能小于4位!");
return false;
}
String confirmPassWord=
request.getParameter("oneUserPassWordBean.confirmPassWord");
if(!userNewPassWord.equals(confirmPassWord)){
request.setAttribute("errorText", "确认密码应该与用户新密码保持一
致!");
return false;
}
return true;
}
}
(3)在web.xml文件中部署该FormRequestTransferCoding过滤器组件
formRequestTransferCoding
com.px1987.webbank.filter.FormRequestTransferCoding
formRequestTransferCoding
/userInfoManageAction.action
杨教授大学堂,版权所有,盗版必究。 15/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
(4)进行登陆系统等方面的功能以测试该FormRequestTransferCoding过滤器组件类的效果---测试没有正确地输入验证码的错误
过滤SQL语句的特殊的字符串
下面是一般的JDBC访问代码
Statement stmt = conn.createStatement(); String checkUser = "select * from login where username = '"+ userName +"'and
userpassword = '"+ userPassword +"'"; ResultSet rs = stmt.executeQuery(checkUser);
杨教授大学堂,版权所有,盗版必究。 16/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
if(rs.next())
response.sendRedirect("SuccessLogin.jsp"); else
response.sendRedirect("FailureLogin.jsp");
但如果数据库里存在一个名叫“yang”的用户,那么在不知道密码的情况下至少有下面几种方法可以登录:
用户名:yang
密码:' or 'a'='a
用户名:yang
密码:' or 1=1/*
用户名:yang' or 1=1/*
密码:(任意)
因此,应该对所接收到的用户名称和密码的字符串进行特殊符号的过滤以避免出现“后门”。
if(userName.equals("") ?? userPswd.equals(""))
throw new UserException("用户名或密码不能空。");
if(userName.indexOf("'") != -1 ?? userName.indexOf("\"") != -1 ?? userName.indexOf(",") != -1 ??userName.indexOf("\\") != -1)
throw new UserException("用户名不能包括 ' \" \\ , 等非法字符。"); if(userPswd.indexOf("'") != -1 ?? userPswd.indexOf("\"") != -1 ?? userPswd.indexOf("*") != -1 ?? userPswd.indexOf("\\") != -1)
throw new UserException("密码不能包括 ' \" \\ * 等非法字符。"); if(userName.startsWith(" ") ?? userPswd.startsWith(" ")) throw new UserException("用户名或密码中不能用空格。");
3、添加一个针对UserRegisterAndUpdateServlet类中的各个方法验证的过滤器(/ registerAndUpdateAction.action)
(1)类名称为CheckUserRegisterAndUpdateFilter、包名称为com.px1987.webbank.filter、继承前面的CheckAllWebFormBaseFilter类
杨教授大学堂,版权所有,盗版必究。 17/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
(2)编程该CheckUserRegisterAndUpdateFilter类
注意:在该CheckUserRegisterAndUpdateFilter类中不能采用常规的获得表单数据的方式获得表单数据,因为其表单中有文件上传的功能实现。
另外,由于在在Filter中直接应用了DiskFileItemFactory获得表单的请求参数,因此在Servlet组件中获得由CheckUserRegisterAndUpdateFilter转发来的表单的参数。 package com.px1987.webbank.filter; import java.io.IOException;
import java.util.HashMap;
import java.util.List;
杨教授大学堂,版权所有,盗版必究。 18/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
import java.util.Map;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.validator.GenericValidator; public class CheckUserRegisterAndUpdateFilter extends CheckAllWebFormBaseFilter{
private static final int BUFFER_SIZE = 16 * 1024 ;
public CheckUserRegisterAndUpdateFilter() {
super();
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
super.doFilter(request, response, filterChain);
boolean checkResult=true;
//实例化一个磁盘文件工厂DiskFileItemFactory
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(BUFFER_SIZE);
//用磁盘文件工厂实例化上传组件ServletFileUpload
ServletFileUpload servletFileUpload =
new ServletFileUpload(diskFileItemFactory);
杨教授大学堂,版权所有,盗版必究。 19/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
Map
registerFormAllItemMap =null;
FileItem uploadFileItem=null;
try{
/*
用上传组件ServletFileUpload解析request对象,并从request对象中得到表单域
List
*/
List fileItems =
servletFileUpload.parseRequest((HttpServletRequest)request);
registerFormAllItemMap= new HashMap();
//遍历List,找到上传表单域和非上传表单域
for (FileItem fileItem : fileItems){
// 是普通表单域
if (fileItem.isFormField()){
registerFormAllItemMap.put(fileItem.getFieldName(),
fileItem.getString());
}
else{ // 是上传表单域
uploadFileItem=fileItem;
}
}
}
catch (FileUploadException e) {
throw new IOException(e.getMessage());
}
String action=registerFormAllItemMap.get("action");; //*******************下面是获得请求的类型并相应地跳转到目标处理方法中*********
if(action.equals("doUserRegister")){
checkResult=checkDoUserRegisterForm(request,registerFormAllItemMap);
}
杨教授大学堂,版权所有,盗版必究。 20/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
else if(action.equals("doUpdateUserInfo")){
checkResult=checkDoUpdateUserInfoForm(request,registerFormAllItemMap);
}
if(!checkResult){
oneRequestDispatcher=request.getRequestDispatcher(checkAllWebFormBaseFilter_errorInfoTargetPage);
oneRequestDispatcher.forward(request, response);
return;
}
/*
* 由于在本表单中直接应用了DiskFileItemFactory获得表单的请求参数,为此采用将表
单的各个属性参数通过request传到对应的Servlet类中
*/
request.setAttribute("registerFormAllItemMap", registerFormAllItemMap);
request.setAttribute("uploadFileItem", uploadFileItem);
filterChain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
super.init(arg0);
}
public boolean checkDoUserRegisterForm(ServletRequest request,Map registerFormAllItemMap){
HttpSession session=((HttpServletRequest)request).getSession();
String verifyCodeInSession=(String)session.getAttribute("verifyCode");
String verifyCodeDigitByInputed=
registerFormAllItemMap.get("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitByInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
return false;
杨教授大学堂,版权所有,盗版必究。 21/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
}
if(!verifyCodeDigitByInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
return false;
}
/*
* 下面对用户在登陆表单中的输入项目进行服务器端的验证
*/
String userName=registerFormAllItemMap.get("userName");
String userPassWord=
registerFormAllItemMap.get("oneUserPassWordBean.userPassWord");
if(GenericValidator.isBlankOrNull(userName)){
request.setAttribute("errorText", "用户名称不能为空!请输入您的用户名
称!");
return false;
}
if(GenericValidator.isBlankOrNull(userPassWord)){
request.setAttribute("errorText", "用户密码名称不能为空!请输入您的用
户密码!");
return false;
}
if(!GenericValidator.maxLength(userPassWord, 18)){
request.setAttribute("errorText", "用户密码不能超过18位!");
return false;
}
if(!GenericValidator.minLength(userPassWord, 4)){
request.setAttribute("errorText", "用户密码不能小于4位!");
return false;
}
杨教授大学堂,版权所有,盗版必究。 22/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
String confirmPassWord=
registerFormAllItemMap.get("oneUserPassWordBean.confirmPassWord");
if(!userPassWord.equals(confirmPassWord)){
request.setAttribute("errorText", "确认密码应该与用户密码保持一
致!");
return false;
}
return true;
}
public boolean checkDoUpdateUserInfoForm(ServletRequest request,Map registerFormAllItemMap){
HttpSession session=((HttpServletRequest)request).getSession();
String verifyCodeInSession=(String)session.getAttribute("verifyCode");
String verifyCodeDigitByInputed=
registerFormAllItemMap.get("verifyCodeDigit");
if(GenericValidator.isBlankOrNull(verifyCodeDigitByInputed)){
request.setAttribute("errorText", "验证码不能为空!请输入本网站所提供
的6位验证码!");
return false;
}
if(!verifyCodeDigitByInputed.equals(verifyCodeInSession)) {
request.setAttribute("errorText","您的验证码不正确,请输入本网站所提
供的6位验证码~");
return false;
}
/*
* 下面对用户在登陆表单中的输入项目进行服务器端的验证
*/
String userName=registerFormAllItemMap.get("userName");
String userPassWord=
杨教授大学堂,版权所有,盗版必究。 23/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
registerFormAllItemMap.get("oneUserPassWordBean.userPassWord");
if(GenericValidator.isBlankOrNull(userName)){
request.setAttribute("errorText", "用户名称不能为空!请输入您的用户名称!");
return false;
}
if(GenericValidator.isBlankOrNull(userPassWord)){
request.setAttribute("errorText", "用户密码名称不能为空!请输入您的用户密码!");
return false;
}
if(!GenericValidator.maxLength(userPassWord, 18)){
request.setAttribute("errorText", "用户密码不能超过18位!");
return false;
}
if(!GenericValidator.minLength(userPassWord, 4)){
request.setAttribute("errorText", "用户密码不能小于4位!");
return false;
}
String confirmPassWord=
registerFormAllItemMap.get("oneUserPassWordBean.confirmPassWord");
if(!userPassWord.equals(confirmPassWord)){
request.setAttribute("errorText", "确认密码应该与用户密码保持一
致!");
return false;
}
return true;
}
}
(3)在web.xml文件中部署该CheckUserRegisterAndUpdateFilter过滤器组件
杨教授大学堂,版权所有,盗版必究。 24/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
checkUserRegisterAndUpdateFilter
com.px1987.webbank.filter.CheckUserRegisterAndUpdateFilter
checkUserRegisterAndUpdateFilter
/registerAndUpdateAction.action
(4)进行系统注册等方面的功能以测试该CheckUserRegisterAndUpdateFilter过滤器组
件类的效果---测试没有正确地输入验证码的错误
杨教授大学堂,版权所有,盗版必究。 25/26页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
杨教授大学堂,版权所有,盗版必究。 26/26页