Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从jsp向servlet发送请求和响应_Java_Eclipse_Jsp_Servlets - Fatal编程技术网

Java 从jsp向servlet发送请求和响应

Java 从jsp向servlet发送请求和响应,java,eclipse,jsp,servlets,Java,Eclipse,Jsp,Servlets,我正在为注册表编写一个验证servlet。表单位于.jsp文件中,具有以下布局: <div class="content"> <h2 class="form">Register</h2> <form action="Register"> <p> User name: <br />

我正在为注册表编写一个验证servlet。表单位于.jsp文件中,具有以下布局:

        <div class="content">
            <h2 class="form">Register</h2>
            <form action="Register">
                <p>
                    User name: <br />
                    <input type="text" name="username" /><br /> First Name: <br />
                    <input type="text" name="fist_name" /><br /> Last Name: <br />
                    <input type="text" name="last_name" /><br /> Email Address: <br />
                    <input type="text" name="email" /><br /> Password: <br />
                    <input type="password" name="password" /><br /> Retype password:
                    <br />
                    <input type="password" name="password2" /><br /> <input
                        type="submit" value="Register" />
                </p>
            </form>

            <!-- end .content -->
        </div>

登记

用户名:

名字:

姓氏:

电子邮件地址:

密码:

重新键入密码:

验证代码应该检查每个字段是否满足一组约束,如果不满足,则写回jsp错误消息

ValidationServlet.java

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // get request parameters for username and password
        String user = request.getParameter("username");
        String firstName = request.getParameter("first_name");
        String lastName = request.getParameter("last_name");
        String email = request.getParameter("email");   
        String pwd = request.getParameter("password");
        String pwd2 = request.getParameter("password2");
        // Validate parameters and forward them to the ejb
        Map<String, String> messages = new HashMap<String, String>();

        if(user != null) {
            // Validate user name
            if(user.trim().isEmpty()) {
                messages.put("error", "Please enter username");
            } else if(!user.matches("^[a-zA-Z0-9]$")) {
                messages.put("error", "Invalid username.");
            } else if(user.length() > MAX_LEN){
                messages.put("error", "Invalid username");
            } else {
                // Username is valid
                messages.put("success", "good");
            }
        }
        if(firstName != null) {
            // Validate first name
            if(firstName.trim().isEmpty()) {
                messages.put("error", "Please enter your first name");
            } else if(!firstName.matches("^[a-zA-Z]$")) {
                messages.put("error", "Invalid name. Use alpha values only.");
            } else if(firstName.length() > MAX_LEN){
                messages.put("error", "Invalid name. Name should be at most " + MAX_LEN + " characters long");
            } else {
                // First name is valid
                messages.put("success", "good");
            }
        }
        if(lastName != null) {
            // Validate last name
            if(lastName.trim().isEmpty()) {
                messages.put("error", "Please enter your last name");
            } else if(!lastName.matches("^[a-zA-Z]$")) {
                messages.put("error", "Invalid name. Use alpha values only.");
            } else if(lastName.length() > MAX_LEN){
                messages.put("error", "Invalid name. Name should be at most " + MAX_LEN + " characters long");
            } else {
                // Last name is valid
                messages.put("success", "good");
            }
        }
        if (email != null) {
            // Email is specified as request parameter, do the business logic here.
            if (email.trim().isEmpty()) {
                messages.put("error", "Please enter email");
            } else if (!email.matches("([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)")) {
                messages.put("error", "Invalid email, please try again.");
            } else {
                // Email is valid
                messages.put("success", "good");
            }
        }
        if(pwd != null) {
            // Validate password
            if(pwd.trim().isEmpty()) {
                messages.put("error", "Please enter password");
            } else if(pwd.length() > MAX_LEN){
                messages.put("error", "Invalid password");
            } else {
                // Password is valid
                messages.put("success", "good");
            }
        }
        if(pwd2 != null) {
            // Validate password
            if(pwd2.trim().isEmpty()) {
                messages.put("error", "Please enter password");
            } else if(pwd2.length() > MAX_LEN){
                messages.put("error", "Invalid password");
            } else if(!pwd2.equals(pwd)) {
                messages.put("error", "Passwords do not match");
            } else {
                // Password is valid
                messages.put("success", "good");
            }
        }
        // Put messages in request scope so that it's accessible in EL by
        // ${messages}.
        request.setAttribute("messages", messages);

        // Forward request to JSP for display.
        request.getRequestDispatcher("login.jsp").forward(request,
                response);
    }
受保护的void doPost(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
//获取用户名和密码的请求参数
字符串user=request.getParameter(“用户名”);
String firstName=request.getParameter(“first_name”);
字符串lastName=request.getParameter(“last_name”);
字符串email=request.getParameter(“email”);
字符串pwd=request.getParameter(“密码”);
字符串pwd2=request.getParameter(“密码2”);
//验证参数并将其转发到ejb
映射消息=新的HashMap();
如果(用户!=null){
//验证用户名
if(user.trim().isEmpty()){
messages.put(“错误”,“请输入用户名”);
}如果(!user.matches(“^[a-zA-Z0-9]$”){
messages.put(“错误”,“无效用户名”);
}else if(user.length()>MAX_LEN){
messages.put(“错误”、“无效用户名”);
}否则{
//用户名是有效的
信息。放置(“成功”、“良好”);
}
}
if(firstName!=null){
//验证名字
if(firstName.trim().isEmpty()){
信息。输入(“错误”,“请输入您的名字”);
}如果(!firstName.matches(“^[a-zA-Z]$”)匹配,则为else{
messages.put(“错误”,“无效名称。仅使用alpha值”);
}else if(firstName.length()>MAX_LEN){
messages.put(“错误”,“无效名称.名称最多应为”+最大长度+”个字符”);
}否则{
//名字是有效的
信息。放置(“成功”、“良好”);
}
}
if(lastName!=null){
//验证姓氏
if(lastName.trim().isEmpty()){
信息。输入(“错误”,“请输入您的姓氏”);
}如果(!lastName.matches(“^[a-zA-Z]$”)匹配,则为else{
messages.put(“错误”,“无效名称。仅使用alpha值”);
}else if(lastName.length()>MAX_LEN){
messages.put(“错误”,“无效名称.名称最多应为”+最大长度+”个字符”);
}否则{
//姓是有效的
信息。放置(“成功”、“良好”);
}
}
如果(电子邮件!=null){
//电子邮件被指定为请求参数,执行此处的业务逻辑。
if(email.trim().isEmpty()){
消息。放置(“错误”,“请输入电子邮件”);
}如果(!email.matches(([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+))匹配,则为else{
邮件。放置(“错误”,“无效电子邮件,请重试”);
}否则{
//电子邮件是有效的
信息。放置(“成功”、“良好”);
}
}
如果(pwd!=null){
//验证密码
if(pwd.trim().isEmpty()){
消息。放置(“错误”,“请输入密码”);
}否则如果(pwd.length()>最大长度){
messages.put(“错误”、“无效密码”);
}否则{
//密码是有效的
信息。放置(“成功”、“良好”);
}
}
如果(pwd2!=null){
//验证密码
if(pwd2.trim().isEmpty()){
消息。放置(“错误”,“请输入密码”);
}else if(pwd2.length()>最大长度){
messages.put(“错误”、“无效密码”);
}否则如果(!pwd2.等于(pwd)){
messages.put(“错误”,“密码不匹配”);
}否则{
//密码是有效的
信息。放置(“成功”、“良好”);
}
}
//将消息放在请求范围内,以便在EL中可以通过
//${messages}。
setAttribute(“消息”,消息);
//将请求转发到JSP进行显示。
request.getRequestDispatcher(“login.jsp”).forward(请求,
反应);
}

我的问题是如何访问哈希映射中的每条消息,并在jsp中相应的输入字段之前相应地显示它们?

要访问
消息
映射,请使用以下代码:

<c:set var="what" value="error"/>
error: <c:out value="${messages[what]}"/>

错误:

要访问
消息
地图,请使用以下代码:

<c:set var="what" value="error"/>
error: <c:out value="${messages[what]}"/>

错误:

您需要更改每个输入字段的键
e、 g.对于错误消息

messages.put("user", "Please enter username");  //for user
messages.put("firstName", "Please enter your first name");  //for first_name 
.......
.......
.......
若你们想显示成功,那个么你们可以在地图中设置成功,否则不要

访问JSP上的
消息
映射

<form action="Register">
  <p>
     User name: <br />
       <input type="text" name="username" /><c:out value="${messages['user']}"/><br /> 
     First Name: <br />
        <input type="text" name="fist_name" /><c:out value="${messages['firstName']}"/><br /> 
     .........
     .........
     .........

     <input type="submit" value="Register" />
  </p>
</form>


用户名:

名字:

......... ......... .........

另见

您需要更改每个输入字段的键
e、 g.对于错误消息

messages.put("user", "Please enter username");  //for user
messages.put("firstName", "Please enter your first name");  //for first_name 
.......
.......
.......
若你们想显示成功,那个么你们可以在地图中设置成功,否则不要

访问JSP上的
消息
映射

<form action="Register">
  <p>
     User name: <br />
       <input type="text" name="username" /><c:out value="${messages['user']}"/><br /> 
     First Name: <br />
        <input type="text" name="fist_name" /><c:out value="${messages['firstName']}"/><br /> 
     .........
     .........
     .........

     <input type="submit" value="Register" />
  </p>
</form>


用户名:

名字:

......... ......... ........