我想确保输入是Javascript中的String

时间:2013-04-14 08:35:04

标签: javascript servlets

在网络项目中,我正在创建学生注册计划。

我有一个.jsp文件供学生注册以便添加/删除等。

如何修改我的javascript代码以检查以确保只允许String输入userName?

这是我的.jsp文件的一部分:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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=UTF-8">
        <title>New User Registration</title>
    </head>
    <body>
    <form method="get" action="RegServlet">
        <h1>Register!</h1>
            Fill out information below:<p>                

            Username:
            <input type="text" name="userName" value =""><p>
<input type="submit" value="Finish!"><p>

    <script type="text/javascript">
        var var1 = "userName";
            if(var1 == (""))
                document.write("<bSystem doesn't like an empty string.....Try Again!!!</b>");
            else if(var1 == ("notmatch"))
                document.write("<b>Inappropriate input!!!.....Try Again!!!</b>");

还有一件事:

单击“完成!”后,我一直收到HTTP状态404错误。它应该引导我到我的RegServlet.java文件中指示的login.jsp文件,因为form method =“get”action =“RegServlet”应该为我做。但似乎它告诉我它找不到“/ Registrar / RegServlet”路径。我究竟做错了什么?

这是我的RegServlet代码:

 public void doStuff(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantiationException, IllegalAccessException, SQLException {
    //see if search parameter is present        
    String userName = request.getParameter("userName");
    String passWord = request.getParameter("passWord");
    String lastName = request.getParameter("lastName");
    String firstName = request.getParameter("firstName");
    String age = request.getParameter("age");
    char sex = request.getParameter("sex").charAt(0);
    String email = request.getParameter("email");

    if(!userName.isEmpty()&&!passWord.isEmpty()&&!lastName.isEmpty()&&!firstName.isEmpty()&&!age.isEmpty()&& sex!='F' || sex!='M' &&!email.isEmpty()) {
        try {
            SaveToDB.createConnection();
            toDB.insertNewUser(userName, passWord, lastName, firstName, age, sex, email);
            RequestDispatcher view = request.getRequestDispatcher("login.jsp");
            view.forward(request, response);
        } catch(SQLException sqlEx) {
            System.out.println("Error!");
        }
    } else {
        RequestDispatcher view = request.getRequestDispatcher("index.jsp");
        view.forward(request, response);
    }

提前致谢!

3 个答案:

答案 0 :(得分:5)

警告:对于您的程序,所有客户端验证都是徒劳的:您永远不会信任它,您也必须进行服务器端验证。但是对于程序的用户来说,客户端验证是一种方便:更快的反馈。

查看HTML5表单:您现在只能使用html进行验证:

  <input type="text" name="userName"  pattern="^[A-Za-z ]+$" >

http://www.html5rocks.com/en/tutorials/forms/html5forms/#toc-validation

如果您想在javascript中进行客户端验证,您必须了解 首先是“onsubmit”事件。

http://www.smashingmagazine.com/2009/07/07/web-form-validation-best-practices-and-tutorials/概述了所有技术。

答案 1 :(得分:1)

为输入字符串应用正则表达式并检查特殊字符。

这里是特殊字符正则表达式的示例: Regex to Match Symbols: !$%^&*()_+|~-=`{}[]:";'<>?,./

答案 2 :(得分:0)

action中提供正确的<form method="get" action="RegServlet">路径,以避免404错误。 试试<form method="get" action="/RegServlet">