共享两个做项目最常用功能操作的封装类 (zhuan)

本文介绍了一个用于ASP.NET Web项目的对话框类,实现了消息提示、确认框及页面跳转等功能,同时提供了一个数据验证类,用于检查用户输入的有效性,包括数字、邮箱等格式验证。

一. 显示消息对话框类

    做项目时总免不了要弹出对话框,或提示用户,或做用户确认。像WinForm下的MessageBox一样很方便,但web下是不是也可以实现呢,答案是肯定的,我简单总结了一下并封装到类,在项目里像WinForm的MessageBox那样直接调用就可以,也可以把它编译成dll作为组件直接调用,并且它也没有弹出对话框时的大白屏现象:)。

     /// <summary>

     /// 显示消息提示对话框。

     /// 李天平

     /// 2005.10.1

     /// </summary>

     public class MessageBox

     {       

         private MessageBox()

         {            

         }

         /// <summary>

         /// 显示消息提示对话框

         /// </summary>

         /// <param name="page">当前页面指针,一般为this</param>

         /// <param name="msg">提示信息</param>

         public static void Show(System.Web.UI.Page page,string msg)

         {

              page.RegisterStartupScript("message","<script language='javascript' defer>alert('"+msg.ToString()+"');</script>");

         }

         /// <summary>

         /// 控件点击消息确认提示框

         /// </summary>

         /// <param name="page">当前页面指针,一般为this</param>

         /// <param name="msg">提示信息</param>

         public static void ShowConfirm(System.Web.UI.WebControls.WebControl Control,string msg)

         {

              //Control.Attributes.Add("onClick","if (!window.confirm('"+msg+"')){return false;}");

              Control.Attributes.Add("onclick", "return confirm('" + msg + "');") ;

         }

         /// <summary>

         /// 显示消息提示对话框,并进行页面跳转

         /// </summary>

         /// <param name="page">当前页面指针,一般为this</param>

         /// <param name="msg">提示信息</param>

         /// <param name="url">跳转的目标URL</param>

         public static void ShowAndRedirect(System.Web.UI.Page page,string msg,string url)

         {

              StringBuilder Builder=new StringBuilder();

              Builder.Append("<script language='javascript' defer>");

              Builder.AppendFormat("alert('{0}');",msg);

              Builder.AppendFormat("top.location.href='{0}'",url);

              Builder.Append("</script>");

              page.RegisterStartupScript("message",Builder.ToString());

 

         }

         /// <summary>

         /// 输出自定义脚本信息

         /// </summary>

         /// <param name="page">当前页面指针,一般为this</param>

         /// <param name="script">输出脚本</param>

         public static void ResponseScript(System.Web.UI.Page page,string script)

         {

              page.RegisterStartupScript("message","<script language='javascript' defer>"+script+"</script>");

         }

     }

二.页面数据验证类

做项目,特别做MIS,更避免不了有用户输入数据需要做有效性验证,这里我总结封装了一个页面数据校验的工具类,用起来也是很方便。

     /// <summary>

     /// 页面数据校验类

     /// 李天平

     /// 2004.8

     /// </summary>

     public class PageValidate

     {

         private static Regex RegNumber = new Regex("^[0-9]+$");

         private static Regex RegNumberSign = new Regex("^[+-]?[0-9]+$");

         private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");

         private static Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$"); //等价于^[+-]?\d+[.]?\d+$

         private static Regex RegEmail = new Regex("^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$");//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样

         private static Regex RegCHZN = new Regex("[\u4e00-\u9fa5]");

 

         public PageValidate()

         {

         }

         #region 数字字符串检查              

         /// <summary>

         /// 检查Request查询字符串的键值,是否是数字,最大长度限制

         /// </summary>

         /// <param name="req">Request</param>

         /// <param name="inputKey">Request的键值</param>

         /// <param name="maxLen">最大长度</param>

         /// <returns>返回Request查询字符串</returns>

         public static string FetchInputDigit(HttpRequest req, string inputKey, int maxLen)

         {

              string retVal = string.Empty;

              if(inputKey != null && inputKey != string.Empty)

              {

                   retVal = req.QueryString[inputKey];

                   if(null == retVal)

                       retVal = req.Form[inputKey];

                   if(null != retVal)

                   {

                       retVal = SqlText(retVal, maxLen);

                       if(!IsNumber(retVal))

                            retVal = string.Empty;

                   }

              }

              if(retVal == null)

                   retVal = string.Empty;

              return retVal;

         }       

         /// <summary>

         /// 是否数字字符串

         /// </summary>

         /// <param name="inputData">输入字符串</param>

         /// <returns></returns>

         public static bool IsNumber(string inputData)

         {

              Match m = RegNumber.Match(inputData);

              return m.Success;

         }       

         /// <summary>

         /// 是否数字字符串可带正负号

         /// </summary>

         /// <param name="inputData">输入字符串</param>

         /// <returns></returns>

         public static bool IsNumberSign(string inputData)

         {

              Match m = RegNumberSign.Match(inputData);

              return m.Success;

         }       

         /// <summary>

         /// 是否是浮点数

         /// </summary>

         /// <param name="inputData">输入字符串</param>

         /// <returns></returns>

         public static bool IsDecimal(string inputData)

         {

              Match m = RegDecimal.Match(inputData);

              return m.Success;

         }       

         /// <summary>

         /// 是否是浮点数可带正负号

         /// </summary>

         /// <param name="inputData">输入字符串</param>

         /// <returns></returns>

         public static bool IsDecimalSign(string inputData)

         {

              Match m = RegDecimalSign.Match(inputData);

              return m.Success;

         }

         #endregion

 

         #region 中文检测

         /// <summary>

         /// 检测是否有中文字符

         /// </summary>

         /// <param name="inputData"></param>

         /// <returns></returns>

         public static bool IsHasCHZN(string inputData)

         {

              Match m = RegCHZN.Match(inputData);

              return m.Success;

         }

         #endregion

 

         #region 邮件地址

         /// <summary>

         /// 是否是浮点数可带正负号

         /// </summary>

         /// <param name="inputData">输入字符串</param>

         /// <returns></returns>

         public static bool IsEmail(string inputData)

         {

              Match m = RegEmail.Match(inputData);

              return m.Success;

         }

         #endregion

 

         #region 其他

         /// <summary>

         /// 检查字符串最大长度,返回指定长度的串

         /// </summary>

         /// <param name="sqlInput">输入字符串</param>

         /// <param name="maxLength">最大长度</param>

         /// <returns></returns>         

         public static string SqlText(string sqlInput, int maxLength)

         {            

              if(sqlInput != null && sqlInput != string.Empty)

              {

                   sqlInput = sqlInput.Trim();                            

                   if(sqlInput.Length > maxLength)//按最大长度截取字符串

                       sqlInput = sqlInput.Substring(0, maxLength);

              }

              return sqlInput;

         }       

         /// <summary>

         /// 字符串编码

         /// </summary>

         /// <param name="inputData"></param>

         /// <returns></returns>

         public static string HtmlEncode(string inputData)

         {

              return HttpUtility.HtmlEncode(inputData);

         }

         /// <summary>

         /// 设置Label显示Encode的字符串

         /// </summary>

         /// <param name="lbl"></param>

         /// <param name="txtInput"></param>

         public static void SetLabel(Label lbl, string txtInput)

         {

              lbl.Text = HtmlEncode(txtInput);

         }

         public static void SetLabel(Label lbl, object inputObj)

         {

              SetLabel(lbl, inputObj.ToString());

         }       

 

         #endregion

}


转载于:https://www.cnblogs.com/zhdonghu/archive/2010/06/22/1762445.html

在 Java Web 开发中,`request.getRequestDispatcher("Zhuan1").forward(request, response)` 和 `response.sendRedirect("Zhuan1")` 是两种不同的请求处理方式,它们在行为机制和使用场景上有显著区别。 `forward()` 方法是服务器端请求转发机制,它将当前的请求和响应对象传递给另一个资源进行处理,例如另一个 Servlet 或 JSP 页面。这种方式下,客户端的浏览器地址栏不会发生变化,因为请求始终在服务器内部流转。在调用 `forward()` 后,当前请求的生命周期仍然在继续,目标资源可以继续使用 `request` 和 `response` 对象进行数据处理和输出[^1]。 而 `sendRedirect()` 是客户端重定向机制,它通过向客户端发送一个 HTTP 302 响应码以及新的 URL,要求客户端重新发起一个新的请求到指定的 URL。这意味着,`sendRedirect()` 会结束当前的请求处理流程,客户端将发起一个全新的请求,原始的请求对象和响应对象的状态不会被保留。因此,在调用 `sendRedirect()` 之后,之前通过 `request.setAttribute()` 设置的属性将不再有效,因为新请求不会携带这些信息。 因此,如果在代码中先执行了 `request.getRequestDispatcher("Zhuan1").forward(request, response)`,再调用 `response.sendRedirect("Zhuan1")`,后者将不会生效,因为 `forward()` 已经将请求转发给目标资源,响应已经被提交,后续的 `sendRedirect()` 调用会抛出异常。同样地,如果先执行 `sendRedirect()`,则当前请求处理流程已经结束,`forward()` 调用也不会生效,因为客户端已经接收到重定向响应并开始新的请求流程[^1]。 以下是一个示例代码,展示了请求转发和重定向的基本使用: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 请求转发示例 request.setAttribute("message", "This is a forwarded request."); request.getRequestDispatcher("Zhuan1").forward(request, response); // 重定向示例(如果取消注释,会导致 IllegalStateException) // response.sendRedirect("Zhuan1"); } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值