实现用户注册功能:用servlet验证提交的数据是否合法,不合法返回注册页面,并提示出错。...

一直在考虑如何带参数地返回错误信息,曾试过用以下方法:

将 错误信息作为属性用request内置对象带回注册页面;

request.setAttribute("unameError", "empty username!");

request.setAttribute("upwError", "empty password!");

response的setHeader()方法实现页面的跳转

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "register.jsp";
response.setHeader("Location",newLocn);

但是出现的问题是:在注册页面中,提取的属性为空。

String name=(String)request.getParameter("username");
String password=(String)request.getParameter("password");

后来知道通过setHeader()重定向跳转页面的数据是通过URL参数来传递的,http://blog.sina.com.cn/s/blog_6effdb920100so89.html

阅读了这篇文章之后,改用以下方法实现页面跳转,问题就解决了。

response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/register.jsp"); //定向的页面
rd.forward(request, response);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Validate.java Servlet示例,它可以检查接收到的姓名是否数据库中已存在: ```java import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Validate extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 加载数据库驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 获取数据库连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password"); // 查询数据库中是否存在指定姓名的记录 ps = conn.prepareStatement("SELECT * FROM user WHERE name = ?"); ps.setString(1, name); rs = ps.executeQuery(); // 如果查询结果不为空,则表示姓名已存在 if (rs.next()) { out.println("<font color=\"red\">该姓名已存在,请重新输入!</font>"); } else { out.println("<font color=\"green\">该姓名可以使用!</font>"); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭数据库连接 try { if (rs != null) rs.close(); if (ps != null) ps.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 当客户端发送一个POST请求到该Servlet时,它会从请求参数中获取姓名,并查询数据库中是否存在该姓名的记录。如果存在,则返回一个红色的文字提示;如果不存在,则返回一个绿色的文字提示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值