MVC案例,开发用户登录模块(一)

对于MVC相比都不陌生,现在就以MVC设计模式为指导思想写一个真实的案例,先是第一步,规划,和进行必要的开发环境的搭建。

首先是规划1.搭建开发环境 1.1导开发包 dom4j开发包 jstl开发包 beanUtils开发包 log4j开发包 1.2创建组织程序的包 com.bird.domain com.bird.dao com.bird.dao.impl com.bird.service com.bird.service.impl com.bird.web.controller com.bird.web.ui com.bird.utils junit.test WEB-INF/jsp保存所有jsp 1.3创建代表数据库的XML文件 在类目录下创建一个代表数据库的XML文件然后是充当数据库的user.xml


然后是作为工具类的Dom4j的工具类的方法

package com.bird.utils; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class XmlUtils { private static String filePath; //静态代码块只获取一次位置 static{ //返回绝对地址 filePath = XmlUtils.class.getClassLoader().getResource("users.xml").getPath(); } /** * 获得指定文件的Document * @return * @throws Exception */ public static Document getDocument() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath)); return document; } /** * 将内存中的Document写到磁盘中去 * @param document * @throws Exception */ public static void write2Document(Document document) throws Exception{ // Pretty print the document to System.out OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream(filePath), format ); writer.write( document ); writer.close(); } }
然后是封装数据的JavaBean

package com.bird.domain; import java.util.Date; public class User { private String id; private String username; private String password; private String email; private Date birthday; private String nickname; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
然后是Dao层的开发

package com.bird.dao.impl; import java.text.SimpleDateFormat; import org.dom4j.Document; import org.dom4j.Element; import com.bird.domain.User; import com.bird.utils.XmlUtils; public class UserDaoImpl { @SuppressWarnings("deprecation") public void add(User user){ try { Document document = XmlUtils.getDocument(); Element root = document.getRootElement(); Element user_tag = root.addElement("user"); user_tag.setAttributeValue("id", user.getId()); user_tag.setAttributeValue("username", user.getUsername()); user_tag.setAttributeValue("password", user.getPassword()); user_tag.setAttributeValue("email", user.getEmail()); user_tag.setAttributeValue("birthday", user.getBirthday()==null ? "":user.getBirthday().toLocaleString()); user_tag.setAttributeValue("nickname", user.getNickname()); XmlUtils.write2Document(document); } catch (Exception e) { throw new RuntimeException(e); } } public User find(String username, String password){ try { Document document = XmlUtils.getDocument(); Element e = (Element) document.selectSingleNode("//user[@username='"+username+"' and @password='"+password+"']"); if(e == null){ return null; } User user = new User(); String date = e.attributeValue("birthday"); if(date==null || date.equals("")){ user.setBirthday(null); }else{ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); user.setBirthday(format.parse(date)); } user.setEmail(e.attributeValue("email")); user.setId(e.attributeValue("id")); user.setNickname(e.attributeValue("nickname")); user.setPassword(e.attributeValue("password")); user.setUsername(e.attributeValue("username")); return user; } catch (Exception e) { throw new RuntimeException(e); } } /** * 查找在数据库中对应的用户是否存在 * @param username * @return */ public boolean find(String username){ try { Document document = XmlUtils.getDocument(); Element e = (Element) document.selectSingleNode("//user[@username='"+username+"']"); if(e == null) return false; else return true; } catch (Exception e) { throw new RuntimeException(e); } } }
最后是测试类

package junit.test; import java.util.Date; import org.junit.Test; import com.bird.dao.impl.UserDaoImpl; import com.bird.domain.User; public class UserDaoTest { @Test public void testAdd(){ User use = new User(); use.setBirthday(new Date()); use.setEmail("[email protected]"); use.setId("123123567"); use.setNickname("小白"); use.setPassword("123"); use.setUsername("abc"); UserDaoImpl dao = new UserDaoImpl(); dao.add(use); } @Test public void testFind(){ UserDaoImpl dao = new UserDaoImpl(); dao.find("aaa","123"); } @Test public void testFindName(){ UserDaoImpl dao = new UserDaoImpl(); dao.find("aaa"); } }
可以说,还是非常繁琐的

你可能感兴趣的:(测试,数据库,java)