需求如下:
* 需求
* 完成用户注册效果。
具体要求:
1)用户输入信息:用户名,密码,确认密码,性别,出生日期,电子邮箱,地址 。
2)用户输入信息后,调用相关的XML操作类,把数据保存到XML文件中。
3)保存成功后,显示成功信息。
* 完成用户注册效果。
具体要求:
1)用户输入信息:用户名,密码,确认密码,性别,出生日期,电子邮箱,地址 。
2)用户输入信息后,调用相关的XML操作类,把数据保存到XML文件中。
3)保存成功后,显示成功信息。
注册页面如下:
首页html代码如下:
<!DOCTYPE html>
<html>
<head>
<title>用户注册页面</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="/day09/RegServlet" method="post">
<h1>用户登陆</h1>
<h2>请填写注册信息</h2>
姓名:<input type="text" name="userName" ><br>
密码:<input type="password" name="userPassword" id="pwd"><br>
确认密码:<input type="password" name="again_userPassword" id="again_pwd" >(PS:如果两次密码匹配不正确,提交后重新注册)<br>
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
出身日期:<input type="text" name="age" ><br>
电子邮箱:<input type="text" name="email"><br>
地址:<select name="sheng">
<option value="广东">广东</option>
<option value="广西">广西</option>
<option value="云南">云南</option>
<option value="其他">其他</option>
</select><br>
<input type="submit" value="提交">
</form>
</body>
</html>
Servlet接收数据并处理:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.text.html.HTMLDocument.HTMLReader.FormAction;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXWriter;
import org.dom4j.io.XMLWriter;
public class RegServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置编码,但该函数在get方法中不适用,要自己对每个字符串转换
request.setCharacterEncoding("utf-8");
String name = request.getParameter("userName");
String userName = new String(name.getBytes("ISO-8859-1"),"utf-8");
String password = request.getParameter("userPassword");
String againPassword = request.getParameter("again_userPassword");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String email = request.getParameter("email");
String sheng = request.getParameter("sheng");
//判断两次密码是否相符
if(!password.equals(againPassword)){
System.out.println("两次密码不匹配,请重新输入");
response.getWriter().append("两次密码不匹配,请重新输入");
response.sendRedirect("/day09/Register.html"); //重定向到登陆页面
return;
}
SAXReader sr = new SAXReader();
try {
//读取xml文档
Document doc = sr.read("D:/My Eclipse/day09/src/user.xml");
Element root = doc.getRootElement(); //获取根标签
Element user = root.addElement("user");
user.addElement("name").setText(name); //为标签设置值
user.addElement("password").setText(password);
user.addElement("sex").setText(sex);
user.addElement("age").setText(age);
user.addElement("sheng").setText(sheng);
XMLWriter sw = new XMLWriter(
new FileOutputStream("D:/My Eclipse/day09/src/user.xml"),
OutputFormat.createPrettyPrint() //以正常格式写进文档
);
sw.write(doc);
sw.close();
RequestDispatcher dispatcher =
request.getRequestDispatcher("/succ.html"); //转发
dispatcher.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
xml文档如下:
<?xml version="1.0" encoding="UTF-8"?>
<Users>
<user>
<name>何胜</name>
<password>2klj3</password>
<sex>男</sex>
<age>91年04月22日</age>
<sheng>广东</sheng>
</user>
<user>
<name>默默</name>
<password>987456</password>
<sex>男</sex>
<age>94年11月11日</age>
<sheng>云南</sheng>
</user>
</Users>