zoukankan      html  css  js  c++  java
  • 编码实战Web端联系人的增删改查

    首先画出分析图

    实现效果如图

    项目下的包如图:


    实体包

    package com.contactSystem.entiey;
    
    public class Contact {
    	private String Id;
    	private String name;
    	private String sex;
    	private String age;
    	private String phone;
    	private String qq;
    	private String email;
    	public String getId() {
    		return Id;
    	}
    	public void setId(String id) {
    		Id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getAge() {
    		return age;
    	}
    	public void setAge(String age) {
    		this.age = age;
    	}
    	public String getPhone() {
    		return phone;
    	}
    	public void setPhone(String phone) {
    		this.phone = phone;
    	}
    	public String getQq() {
    		return qq;
    	}
    	public void setQq(String qq) {
    		this.qq = qq;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	@Override
    	public String toString() {
    		return "Contact [Id=" + Id + ", name=" + name + ", sex=" + sex
    				+ ", age=" + age + ", phone=" + phone + ", qq=" + qq
    				+ ", email=" + email + "]";
    	}
    
    }
    

      XML的工具包(只是避免了代码的重复使用,将其放进工具包中)

    package com.contactSystem.util;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    import javax.management.RuntimeErrorException;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    /*
     * xml操作的工具类
     */
    public class XMLUtil {
    	//写出一个xml文件
    	public static void write2xml(Document doc) throws Exception{
    		OutputStream out=new FileOutputStream("e:/contact.xml");
    		OutputFormat format=OutputFormat.createPrettyPrint();
    		format.setEncoding("utf-8");
    		XMLWriter writer=new XMLWriter(out,format);
    		writer.write(doc);
    		writer.close();
    	}
    	
    	//读取本地xml文件的方法
    	public static Document getDocument(){
    		Document doc;
    		try {
    			doc = new SAXReader().read("e:/contact.xml");
    			return doc;
    		} catch (DocumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			throw new RuntimeException(e);
    		}
    		
    	}
    	
    }
    

      


    抽象的接口

    package com.contactSystem.dao;
    
    import java.io.FileNotFoundException;
    import java.io.UnsupportedEncodingException;
    import java.util.List;
    
    import org.dom4j.DocumentException;
    import com.contactSystem.entiey.Contact;
    
    public interface ContactOperate {
    	public void addContact(Contact contact) throws Exception;
    	public void updateContact(Contact contact) throws Exception;
    	public void removeContact(String id) throws Exception;
    	public Contact findContact(String id) throws Exception;
    	public List<Contact>  allContacts();
    }
    

      具体的实现方法和操作

    package com.contactSystem.dao.daoImpl;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.UUID;
    
    import javax.persistence.Id;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    import com.contactSystem.dao.ContactOperate;
    import com.contactSystem.entiey.Contact;
    import com.contactSystem.util.XMLUtil;
    
    public class Operater implements ContactOperate {
    
    	@Override
    	//添加联系人
    	public void addContact(Contact contact) throws Exception {
    		// TODO Auto-generated method stub
    		File file=new File("e:/contact.xml");
    		Document doc=null;
    		Element rootElem=null;
    		if (file.exists()) {
    			doc=new SAXReader().read(file);
    			rootElem=doc.getRootElement();
    		}else {
    			doc=DocumentHelper.createDocument();
    			rootElem=doc.addElement("ContactList");
    		}
    		
    		//开始添加个体
    		Element element=rootElem.addElement("contact");
    		//有系统自动生成一随机且唯一的ID,赋给联系人Id,系统提供了一个包UUID包
    		String uuid=UUID.randomUUID().toString().replace("-", "");
    		
    		element.addAttribute("Id", uuid);
    		element.addElement("姓名").setText(contact.getName());
    		element.addElement("name").setText(contact.getName());
    		element.addElement("sex").setText(contact.getSex());
    		element.addElement("age").setText(contact.getAge());
    		element.addElement("phone").setText(contact.getPhone());
    		element.addElement("email").setText(contact.getEmail());
    		element.addElement("qq").setText(contact.getQq());
    		
    		//写入到本地的xml文档中
    		XMLUtil.write2xml(doc);
    		
    	}
    
    	@Override
    	public void updateContact(Contact contact) throws Exception {
    		// TODO Auto-generated method stub
    		//通过xpath查找对应id的联系人
    		Document document=XMLUtil.getDocument();
    		Element element=(Element) document.selectSingleNode("//contact[@Id='"+contact.getId()+"']");
    		//根据标签改文本
    		System.out.println(element);
    		element.element("name").setText(contact.getName());
    		element.element("age").setText(contact.getAge());
    		element.element("email").setText(contact.getEmail());
    		element.element("phone").setText(contact.getPhone());
    		element.element("sex").setText(contact.getSex());
    		element.element("qq").setText(contact.getQq());
    		XMLUtil.write2xml(document);
    
    	}
    
    	@Override
    	public void removeContact(String id) throws Exception {
    		// TODO Auto-generated method stub
    		//通过xpath去查找对应的contact
    		Document document=XMLUtil.getDocument();
    		Element element=(Element) document.selectSingleNode("//contact[@Id='"+id+"']");
    		/**
    		 * 如果是火狐浏览器,其本身有一个bug,对于一个get请求,它会重复做两次,
    		 * 第一次会把一个唯一的id给删除掉,但是在第二次的时候,它会继续去删,而这个时候查找不到,会报错,会发生错误,
    		 * 为了解决这个bug,我们在这里验证其是否为空
    		 */
    		if (element!=null) {
    			element.detach();
    			XMLUtil.write2xml(document);
    		}
    	}
    
    	@Override
    	public Contact findContact(String id) throws Exception {
    		// TODO Auto-generated method stub
    		Document document=XMLUtil.getDocument();
    		Element e=(Element) document.selectSingleNode("//contact[@Id='"+id+"']");
    		
    		Contact contact=null;
    		if (e!=null) {
    			contact=new Contact();
    			contact.setAge(e.elementText("age"));
    			contact.setEmail(e.elementText("email"));
    			contact.setId(e.attributeValue("id"));
    			contact.setName(e.elementText("name"));
    			contact.setPhone(e.elementText("phone"));
    			contact.setSex(e.elementText("sex"));
    			contact.setQq(e.elementText("qq"));
    		}
    		return contact;
    	}
    
    	@Override
    	public List<Contact> allContacts() {
    		// TODO Auto-generated method stub
    		Document document=XMLUtil.getDocument();
    		List<Contact> list=new ArrayList<Contact>();
    		List<Element> conElements=(List<Element>)document.selectNodes("//contact");
    		for (Element element : conElements) {
    			Contact contact=new Contact();
    			contact.setId(element.attributeValue("Id"));
    			contact.setAge(element.elementText("age"));
    			contact.setEmail(element.elementText("email"));
    			contact.setName(element.elementText("name"));
    			contact.setPhone(element.elementText("phone"));
    			contact.setQq(element.elementText("qq"));
    			contact.setSex(element.elementText("sex"));
    			list.add(contact);
    		}
    		return list;
    	}
    
    }
    

      


    添加联系人的html页面

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <title>添加联系人</title>
        <style media="screen">
          #btn{
            40px;
             50px;
            background: green;
            color: white;
            font-size:14px;
          }
        </style>
    </head>
    
    <body>
        <center>
            <h2>添加联系人</h2>
        </center>
        <form action="/ContactWeb/addServlet" method="post">
            <table border="1" align="center">
                <tbody>
               
                    <tr>
                        <th>姓名</th>
                        <td><input type="text" name="userName" /></td>
                    </tr>
                    <tr>
                        <th>年龄</th>
                        <td><input type="text" name="age" /></td>
                    </tr>
                    <tr>
                      <th>性别</th>
                      <td>
                        <input type="radio" name="sex"  value="男"/>男  
                        <input type="radio" name="sex" value="女" />女
                      </td>
                    </tr>
                    <tr>
                        <th>电话</th>
                        <td><input type="text" name="phone" /></td>
                    </tr>
                    <tr>
                        <th>QQ</th>
                        <td><input type="text" name="qq" /></td>
                    </tr>
                    <tr>
                        <th>邮箱</th>
                        <td><input type="text" name="email" /></td>
                    </tr>
                    <tr>
                      <td colspan="3" align="center">
                        <input type="submit"  value="提交" id="btn"/>
                      </td>
                    </tr>
                </tbody>
            </table>
        </form>
    </body>
    
    </html>
    

      


    接下来则是最重要的servlet(显示首页,所有联系人)

    package com.contactSystem.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.contactSystem.dao.daoImpl.Operater;
    import com.contactSystem.entiey.Contact;
    
    public class Index extends HttpServlet {
    
    	/**
    	 * 显示所有联系人的逻辑方式
    	 */
    	private static final long serialVersionUID = 1L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		Operater operater=new Operater();
    		List<Contact> contacts=operater.allContacts();
    
    		PrintWriter writer=response.getWriter();
    		/**
    		 * shift+alt+A ——>区域选择 
    		 * 正则表达式:“."表示任意字符,"*"表示多个字符
    		 *             “/1”表示一行代表匹配一行内容
    		 */
    		String html="";
    		html+= "<!DOCTYPE html>";
    		html+= "<html>";
    		html+= "";
    		html+= "<head>";
    		html+= "    <meta charset='utf-8'>";
    		html+= "    <title>查询所有联系人</title>";
    		html+= "    <style media='screen'>";
    		html+= "        table td {";
    		html+= "            text-align: center;";
    		html+= "        }";
    		html+= "";
    		html+= "        table {";
    		html+= "            border-collapse: collapse;";
    		html+= "        }";
    		html+= "    </style>";
    		html+= "</head>";
    		html+= "";
    		html+= "<body>";
    		html+= "    <center>";
    		html+= "        <h2>查询所有联系人</h2>";
    		html+= "    </center>";
    		html+= "    <table border='1' align='center'>";
    		html+= "        <tbody>";
    		html+= "            <thead>";
    		html+= "                <th>编号</th>";
    		html+= "                <th>姓名</th>";
    		html+= "                <th>性别</th>";
    		html+= "                <th>年龄</th>";
    		html+= "                <th>电话</th>";
    		html+= "                <th>QQ</th>";
    		html+= "                <th>邮箱</th>";
    		html+= "                <th>操作</th>";
    		html+= "            </thead>";
    		html+= "            ";
    		html+= "            <tr>";
    		if (contacts!=null) {
    			for (Contact contact : contacts) {
    				html+= "                <td>"+contact.getId()+"</td>";
    				html+= "                <td>"+contact.getName()+"</td>";
    				html+= "                <td>"+contact.getSex()+"</td>";
    				html+= "                <td>"+contact.getAge()+"</td>";
    				html+= "                <td>"+contact.getPhone()+"</td>";
    				html+= "                <td>"+contact.getQq()+"</td>";
    				html+= "                <td>"+contact.getEmail()+"</td>";
    				html+= "                <td><a href='"+request.getContextPath()+"/FindIdServlet?id="+contact.getId()+"'>修改</a>  <a href='"+request.getContextPath()+"/DeleteServlet?id="+contact.getId()+"'>删除</a></td>";
    				html+= "            </tr>";
    			}
    		}
    		html+= "            <tr>";
    		html+= "                <td colspan='8'>";
    		html+= "                    <a href='"+request.getContextPath()+"/add.html'''>添加联系人</a>";
    		html+= "                </td>";
    		html+= "            </tr>";
    		html+= "        </tbody>";
    		html+= "    </table>";
    		html+= "</body>";
    		html+= "";
    		html+= "</html>";
    		writer.write(html);
    	}
    
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    

      添加联系人的servlet

    package com.contactSystem.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.contactSystem.dao.daoImpl.Operater;
    import com.contactSystem.entiey.Contact;
    
    public class addServlet extends HttpServlet {
    
    	/**
    	 * 处理添加联系人的逻辑
    	 */
    	private static final long serialVersionUID = 1L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		String userName=request.getParameter("userName");
    		String age=request.getParameter("age");
    		String sex=request.getParameter("sex");
    		String phone=request.getParameter("phone");
    		String qq=request.getParameter("qq");
    		String email=request.getParameter("email");
    		
    		Operater operater=new Operater();
    		Contact contact=new Contact();
    		contact.setName(userName);
    		contact.setAge(age);
    		contact.setSex(sex);
    		contact.setPhone(phone);
    		contact.setQq(qq);
    		contact.setEmail(email);
    		try {
    			operater.addContact(contact);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		response.sendRedirect(request.getContextPath()+"/Index");
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    

     修改联系人,根据查找到的联系人,显示在其上面如图(根据显示的首页显示得内容为本页面的默认值)

    首先是要去查找这个联系人的信息,即FindIdServlet

    package com.contactSystem.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.contactSystem.dao.daoImpl.Operater;
    import com.contactSystem.entiey.Contact;
    
    public class FindIdServlet extends HttpServlet {
    
    	/**
    	 * 修改联系人逻辑
    	 */
    	private static final long serialVersionUID = 1L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter writer=response.getWriter();
    		Operater operater=new Operater();
    		
    		String id=request.getParameter("id");
    		Contact contact=null;
    		try {
    			contact=operater.findContact(id);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		String html="";
    		html += "<!DOCTYPE html>";
    		html += "<html>";
    		html += "<head>";
    		html += "    <meta charset='utf-8'>";
    		html += "    <title>添加联系人</title>";
    		html += "    <style media='screen'>";
    		html += "      #btn{";
    		html += "        40px;";
    		html += "         50px;";
    		html += "        background: green;";
    		html += "        color: white;";
    		html += "        font-size:14px;";
    		html += "      }";
    		html += "    </style>";
    		html += "</head>";
    		html += "";
    		html += "<body>";
    		html += "    <center>";
    		html += "        <h2>修改联系人</h2>";
    		html += "    </center>";
    		html += "    <form action='"+request.getContextPath()+"/UpdateServlet' method='post'>";
    		html +="<input type='hidden' name='id' value='"+id+"' />";
    		html += "        <table border='1' align='center'>";
    		html += "            <tbody>";
    		html += "                <tr>";
    		html += "                    <th>姓名</th>";
    		html += "                    <td><input type='text' name='userName' value='"+contact.getName()+"'/></td>";
    		html += "                </tr>";
    		html += "                <tr>";
    		html += "                    <th>年龄</th>";
    		html += "                    <td><input type='text' name='age' value='"+contact.getAge()+"' /></td>";
    		html += "                </tr>";
    		html += "                <tr>";
    		html += "                  <th>性别</th>";
    		html += "                  <td>";
    		
    		if (contact.getSex().equals("男")) {
    			html += "                    <input type='radio' name='sex'  value='男'    checked='checked'/>男  ";
    			html += "                    <input type='radio' name='sex' value='女' />女";
    		}else {
    			html += "                    <input type='radio' name='sex'  value='男'    />男  ";
    			html += "                    <input type='radio' name='sex' value='女' checked='checked' />女";
    		}
    		html += "                  </td>";
    		html += "                </tr>";
    		html += "                <tr>";
    		html += "                    <th>电话</th>";
    		html += "                    <td><input type='text' name='phone' value='"+contact.getPhone()+"' /></td>";
    		html += "                </tr>";
    		html += "                <tr>";
    		html += "                    <th>QQ</th>";
    		html += "                    <td><input type='text' name='qq' value='"+contact.getQq()+"'  /></td>";
    		html += "                </tr>";
    		html += "                <tr>";
    		html += "                    <th>邮箱</th>";
    		html += "                    <td><input type='text' name='email' value='"+contact.getEmail()+"' /></td>";
    		html += "                </tr>";
    		html += "                <tr>";
    		html += "                  <td colspan='3' align='center'>";
    		html += "                    <input type='submit'  value='提交' id='btn'/>";
    		html += "                  </td>";
    		html += "                </tr>";
    		html += "            </tbody>";
    		html += "        </table>";
    		html += "    </form>";
    		html += "</body>";
    		html += "";
    		html += "</html>";
    		
    		
    		writer.write(html);
    		
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    

      然后则是根据提交的内容去修改本地的联系人

    package com.contactSystem.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.contactSystem.dao.daoImpl.Operater;
    import com.contactSystem.entiey.Contact;
    
    public class UpdateServlet extends HttpServlet {
    
    	/**
    	 * 将修改后的数据提交
    	 */
    	private static final long serialVersionUID = 1L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		response.setContentType("text/html");
    		
    		request.setCharacterEncoding("utf-8");
    		String userName=request.getParameter("userName");
    		System.out.println(userName);
    		String age=request.getParameter("age");
    		String sex=request.getParameter("sex");
    		String phone=request.getParameter("phone");
    		String qq=request.getParameter("qq");
    		String email=request.getParameter("email");
    		String id=request.getParameter("id");
    		Operater operater=new Operater();
    		Contact contact=new Contact();
    		contact.setId(id);
    		contact.setName(userName);
    		contact.setAge(age);
    		contact.setSex(sex);
    		contact.setPhone(phone);
    		contact.setQq(qq);
    		contact.setEmail(email);
    		try {
    			operater.updateContact(contact);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		response.sendRedirect(request.getContextPath()+"/Index");
    		
    		
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    

      最后则是删除联系人,不过要注意的是:火狐浏览器如果判断是get请求的话,会向服务器发送两次请求,可能会导致一些问题,其他的浏览器不会出出现该问题

    package com.contactSystem.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.contactSystem.dao.daoImpl.Operater;
    
    public class DeleteServlet extends HttpServlet {
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		response.setContentType("text/html;charset=utf-8");
    		
    		String id=request.getParameter("id");
    		Operater operater=new Operater();
    		try {
    			operater.removeContact(id);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		response.sendRedirect(request.getContextPath()+"/Index");
    		
    	}
    
    	
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    }
    

      

     最后:不用jsp去写,就用servlet去写html真的好累,还是好好学jsp吧。

  • 相关阅读:
    代理模式
    适配器模式
    策略模式
    原型模式
    内存溢出
    jvm常用参数
    单例模式
    抽象工厂
    工厂方法模式
    选择器代码
  • 原文地址:https://www.cnblogs.com/helloworldcode/p/6041130.html
Copyright © 2011-2022 走看看