由于这个路径没有写死,都是相对路径,所以重用性高。
包com.wanhao.dao
Dao.java
package com.wanhao.dao;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Dao extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getContextPath());
System.out.println(request.getServletPath());
System.out.println(request.getRequestURI());
System.out.println(request.getRealPath("/"));
String nickname=request.getParameter("nickname");
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
System.out.println("4");
e.printStackTrace();
}
Document d=null;
try {
d = db.parse(new File(request.getRealPath("/")+"/WEB-INF/classes/com/wanhao/dao/db.xml"));
} catch (SAXException e) {
System.out.println("2");
e.printStackTrace();
}
Element root=d.getDocumentElement();
NodeList list=d.getElementsByTagName("user");
for(int n=0;n<list.getLength();++n)
{
Element no= (Element) list.item(n);
if(no.getAttribute("nickname").equals(nickname))
{
request.setAttribute("Message", "此昵称已存在");
request.getRequestDispatcher("/register.jsp" ).forward(request, response);
return ;
}
}
Element user=d.createElement("user");
user.setAttribute("nickname", nickname);
user.setAttribute("username", request.getParameter("username"));
user.setAttribute("password",request.getParameter("password"));
root.appendChild(user);
try {
String path=request.getRealPath("/")+"/WEB-INF/classes/com/wanhao/dao/db.xml";
DaoUtils.UpdateXML(d,path);
} catch (TransformerException e) {
System.out.println("3");
e.printStackTrace();
}
request.setAttribute("Message", "注册成功");
request.getRequestDispatcher("/register.jsp" ).forward(request, response);
return ;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Daologin.java
package com.wanhao.dao;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Daologin extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
System.out.println("4");
e.printStackTrace();
}
Document d=null;
try {
d = db.parse(new File(request.getRealPath("/")+"/WEB-INF/classes/com/wanhao/dao/db.xml"));
} catch (SAXException e) {
System.out.println("2");
e.printStackTrace();
}
NodeList list=d.getElementsByTagName("user");
for(int n=0;n<list.getLength();++n)
{
Element no= (Element) list.item(n);
if(no.getAttribute("username").equals(username)&&no.getAttribute("password").equals(password))
{
System.out.println("找到了用户"+username);
request.setAttribute("Message", "欢迎您 , "+no.getAttribute("nickname"));
request.getRequestDispatcher("/Main.jsp" ).forward(request, response);
return ;
}
}
request.setAttribute("Error", "对不起此用户不存在");
request.getRequestDispatcher("/login.jsp" ).forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
DaoUtils.java
package com.wanhao.dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
public class DaoUtils {
public static void UpdateXML(Document dom,String path) throws TransformerException, FileNotFoundException
{
TransformerFactory tf=TransformerFactory.newInstance();
Transformer tr=tf.newTransformer();
tr.transform(new DOMSource(dom), new StreamResult(new File(path)) );
}
}
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'login.jsp' starting page</title>
</head>
<body>
${Error}
<form action="${pageContext.request.contextPath}/servlet/Daologin" method="post">
学号:<input type="text" name="username">
密码 : <input type="password" name="password">
<input type="submit" name="登录">
</form>
</body>
</html>
Main.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'Main.jsp' starting page</title>
</head>
<body>
<h1>XXXX网站登录界面</h1>
${Message}
<a href="${pageContext.request.contextPath}/register.jsp">注册</a>
<a href="${pageContext.request.contextPath}/login.jsp">登录</a>
</body>
</html>
register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'register.jsp' starting page</title>
</head>
<body>
请填写以下注册信息
<form method="post" action="${pageContext.request.contextPath}/servlet/Dao">
学号:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
昵称:<input type="text" name="nickname"><br/>
<input type="submit" name="提交">
</form>
${Message}
</body>
</html>