后台可以处理数据 但是前端页面没有显示处理结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>
<link rel="stylesheet" href="${pageContext.request.contextPath }/css/reg.css">
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-3.3.1.js"></script>
<script type="text/javascript">
function changeImg() {
var img = document.getElementById("img");
img.src = "${pageContext.request.contextPath}/CheckImgServlet?date=" + new Date();
}
function CheckUser(){
var username = $("#username").val();
alert(username);
$.ajax({
type:"GET",
url:"RegServlet",
dataType:"json",
data:{"username" : username} ,
success:function(json){
console.log(json);
for(var i = 0 ; i < json.length ; i++){
var ch = json[i];
$("username").append("<p>" + ch.msg + "</p>");
}
},
error:function () {
alert("请求出错!");
}
});
}
</script>
</head>
<body>
<div class="reg">
<div class="header">
<h1>
<a href="${pageContext.request.contextPath }/login.jsp">登录</a>
<a href="#">注册</a>
</h1>
<button></button>
</div>
<form action="${pageContext.request.contextPath }/RegServlet?method=reg&str=${str }" method="post">
<span > ${msg }</span>
<div class="name">
<input type="text" id="username" name="username" onblur="javascript:CheckUser()" placeholder="请输入用户名" value="${username }">
<p></p>
</div>
<div class="pwd">
<input type="password" id="pwd1" name="password" placeholder="6-16位密码,区分大小写,不能用空格">
<p></p>
</div>
<div class="confirm-pwd">
<input type="password" id="pwd2" name="psw" placeholder="确认密码">
<p></p>
</div>
<div class="idcode">
<input type="text" name="verifys" id="verificationCode" placeholder="请输入验证码">
<a href='#' onclick="changeImg()"> 换一张</a>
<span><img id="img" src="${pageContext.request.contextPath }/CheckImgServlet"/></span>
<div class="clear"></div>
</div>
<div class="btn-red">
<input type="submit" value="注册" id="reg-btn">
</div>
</form>
</div>
</body>
</html>
=================================================
package com.imooc.web.aution;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.imooc.domin.User;
import com.imooc.service.UserService;
import com.imooc.service.impl.UserServiceImpl;
/**
* Servlet implementation class RegServlet
*/
@WebServlet("/RegServlet")
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String methodname = request.getParameter("method");
if("reg".equals(methodname)) {
reg(request,response);
}
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
UserService userService = new UserServiceImpl();
boolean flag = userService.edituser(username);
if(flag) {
JSONObject json = new JSONObject();
json.put("msg", "OK");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
out.println(json);
}else {
JSONObject jsona = new JSONObject();
jsona.put("msg", "用户名已被使用请重新注册");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
String json = JSON.toJSONString(jsona);
out.println(json);
System.out.println(json);
}
}
/**
* 注册的方法
* @param request
* @param response
* @throws IOException
* @throws ServletException
*/
private void reg(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受数据
String username = request.getParameter("username");//用户名
String password = request.getParameter("password");//输入密码
String psw = request.getParameter("psw");//确认密码
String verify = (String) request.getSession().getAttribute("verify");//生成的验证码
String verifys = request.getParameter("verifys");//输入的验证码
String regex = "\\w{6,16}";
User user = new User();
boolean flag = password.matches(regex);
if(flag && (password.equals(psw))) {
user.setPassword(password);
}else {
request.setAttribute("msg", "密码错误");
request.getRequestDispatcher("/reg.jsp").forward(request, response);
return;
}
if(!verify.equalsIgnoreCase(verifys)) {
request.setAttribute("msg", "验证码错误");
request.getRequestDispatcher("/reg.jsp").forward(request, response);
return;
}
user.setUsername(username);
//调用业务层处理数据
UserService userService = new UserServiceImpl();
userService.reg(user);
//跳转至登录页面
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}23
收起
正在回答
2回答
同学你好,
1、首先在RegServlet类中,flag为true时,相等于用户名已经存在,应提示用户名已被使用请重新注册,反之为Ok。修改如下:

2、在jsp中同学无需使用for循环,这里可以直接对msg进行判断,当不等于OK时,弹出提示并跳转至注册页面。如下:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星