时间:2014-12-19 来源:

【设计模式】:Dao设计模式详解及一个简单的项目(AJAX+JSP+Servlet) 【编程语言】

迫于课程结束承接网页制作,老师逼着让做课程设计,承接网页制作 IOException { doPost(req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("gb2312"); User user = null; String username = req.getParameter("username").toString(); String password = req.getParameter("password").toString(); if(username == null || username.equals("")){ resp.sendRedirect("login.jsp"); } if(password == null || password.equals("")){ resp.sendRedirect("login.jsp"); } try { UserDao dao = DAOFactory.getUserDAOInstance(); //标记1 user = dao.queryByName(username); //标记2 if(user != null){ System.out.println("user不为空"); if((user.getPassword().trim()).equals(password.trim())){ System.out.println("登陆成功"); resp.sendRedirect("main.jsp"); }else{ System.out.println("密码错误"); resp.sendRedirect("login.jsp"); } }else{ System.out.println("登陆失败"); resp.sendRedirect("login.jsp"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 我们看下doPost()方法中的try....catch代码块,网页外包接活这里边我写了两个标记.我们先看标记1.

一、完成登陆功能(未设计AJAX,name); ResultSet rs = this.pstmt.executeQuery(); if(rs.next()){ user = new User(); user.setId(rs.getInt(1)); user.setUsername(rs.getString(2)); user.setPassword(rs.getString(3)); } this.pstmt.close(); this.conn.close(); }catch(Exception e){ <pre name="code" class="java"><span style="white-space:pre"> </span>e.printStackTrace(); }return user;}}

接下来承接网页制作,我们配置一下web.xml文件:

先画一个图,承接网页制作这个图可能能够完整表达出dao设计模式的意思web切图报价,但是可以在下边通过代码看出来:

http://download.csdn.net/detail/u010800530/8273915

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <div style="border: 1px solid #ccc;width:350;height:450;margin:auto auto;"> <br> <center><h3>登陆界面</h3></center> <br><br> <br> <form method="post" name="Login" action="login" onSubmit="return login();"> <table> <tr> <td>用户名:<input type="text" id="username" name="username"/></td> </tr> <tr> <td>密  码:<input type="password" id="password" name="password" /></td> </tr> <br> <tr> <td><input type="submit" name="Submit" value="提交" /></td> </tr> </table> </form> </div> <script type="text/javascript" > function login() { var name = document.getElementById("username").value; var pwd = document.getElementById("password").value; if(name.length != 0 && pwd.length != 0){ return true; }else{ alert("请输入姓名或者密码!"); return false; } } </script> </body> </html> 多余的不用看,web切图报价我们看表单提交选项符合w3c标准,function(i,"list",这里因为懒承接网页制作,直接把数据写死了 window.location.href="deleteuser?userid="+val; } } //更新方法,div前端切图懒没写 function updateUser(){ alert("update"); } //通过id查询web切图报价,懒没写 function queryById(){ } //通过name查询,web切图报价懒没写 function queryByName(){ alert(2); } 通过AJAX,我们在页面刷新的时候提交一个请求,手机html制作并且得到请求把相应的值用jquery添加到页面上边.

user = dao.queryByName(username)

这句代码中的queryByName(username)方法调用的是UserDaoProxy.java代理类中的方法网页外包接活,这个代理类是对UserDao接口.我们写下UserDaoProxy.java:

这是效果图,jpg或psd转html看起来是挺简单的:

2、标记2

把写个这个东西的源代码放上来:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用户管理操作界面</title> <script type="text/javascript" src="js/jquery-2.1.1.js"></script> <script type="text/javascript" src="js/main.js"></script> </head> <body> <h2 style="margin-left:44%; margin-top:9%;">用户管理操作界面</h2> <form style="margin-left:42%;"> <input type="text" name="userid" style="width:60px;"><input type="submit" value="按Id查询" onclick="queryById()"> <input type="text" name="username" style="width:60px;"><input type="submit" value="按姓名查询" onclick="queryByName()"> </form> <table cellpadding="1" border="1" style="margin-left:43%; text-align: center;"> <tr> <td>Id</td> <td>姓名</td> <td>密码</td> <td>操作</td> </tr> </table> <div id="myDiv"></div> </body> </html> 在这个页面web前端制作,并写了一个main.js,我们下边把main.js的代码贴上来:

package com.cn.daoProxy; import java.util.ArrayList; import java.util.List; import com.cn.dao.DataBaseConnection; import com.cn.dao.UserDao; import com.cn.dao.impl.UserDaoImpl; import com.cn.entity.User; public class UserDaoProxy implements UserDao { private DataBaseConnection dbc = null; private UserDao dao = null; public UserDaoProxy() { super(); this.dbc = new DataBaseConnection(); this.dao = new UserDaoImpl(this.dbc.getConnection()); } public boolean deleteById(int userid) throws Exception { Boolean bo = this.dao.deleteById(userid); if(bo){ return true; } else{ return false; } } public List<User> findAll() throws Exception { List<User> userList = new ArrayList<User>(); userList = this.dao.findAll(); return userList; } public boolean insert(User user) throws Exception { return false; } public User queryById(int userid) throws Exception { // TODO Auto-generated method stub return null; } public User queryByName(String name) throws Exception { User user = null; try{ user = this.dao.queryByName(name); }catch(Exception e){ e.printStackTrace(); }finally{ dbc.close(); } return user; } } 写到这里,承接网页制作我忘了把实体类的代码贴出来了:User.java

当我们打开login.jsp,并输入用户名密码登陆之后,网站div+css到了main.jsp页面符合w3c标准,在这个页面我们要实现,手机html制作打开这个页面的时候能够直接显示User表.

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>acceptLogin</servlet-name> <servlet-class>com.cn.controller.LoginAction</servlet-class> </servlet> <servlet-mapping> <servlet-name>acceptLogin</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>listAction</servlet-name> <servlet-class>com.cn.controller.ListAction</servlet-class> </servlet> <servlet-mapping> <servlet-name>listAction</servlet-name> <url-pattern>/list</url-pattern> </servlet-mapping> <servlet> <servlet-name>deleteAction</servlet-name> <servlet-class>com.cn.controller.DeleteAction</servlet-class> </servlet> <servlet-mapping> <servlet-name>deleteAction</servlet-name> <url-pattern>/deleteuser</url-pattern> </servlet-mapping> </web-app> 我们看第一个servlet,刚好对应login.jsp中的路径.这个servlet指向com.cn.controller.LoginAction.java类web前端制作,我们把这个servlet类写出来:

package com.cn.entity; public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int 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; } } 然后,div+css制作我们回到上边控制层的LoginAction.java,通过验证是否用户密码正确,承接网页制作判断可以登陆系统(这里没做拦截器)

首先web切图报价,我们建立一个项目TestJSP

然后,web切图报价我们写一个login.jsp

1、标记1

在这个类中符合w3c标准,我们看下构造方法,html切图制作这个构造方法传入了一个Connection类型参数网页外包接活,通过这个参数,网页外包接活我们在对这个类进行实例化的时候就会打开对数据库的链接.并通过这个链接执行sql语句.

点击次数:13924
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日jquery学习【Web前端】2015年08月14日JS添加千分位与去掉千分位的示例2014年01月29日NT的19个秘密武器2014年01月29日Java搜索引擎Lucene4.0的开发状态 ,,2016年06月23日hdu3033Ilovesneakers! 【编程语言】2015年07月02日秋季吃什么水果好2014年01月29日OCP-1Z0-053-V12.02-236题2016年11月22日WIN服务器安全批处理文件2014年01月30日pig脚本不需要后缀名(pythontempfile模块生成pig脚本临时文件,执行) 【编程语言】2015年05月07日Linux进程编程基础介绍【研发管理】2015年05月15日synchronized静态代码块,以及其中的wait,notify和notifyAll 【移动开发】2015年03月30日【Codevs3160】最长公共子串 【编程语言】2015年07月29日BZOJ3172【Tjoi2013】单词AC自动机(fail树) 【编程语言】2015年07月09日WEB安全实战(四)关于Cookie 【综合】2014年11月04日hdu1235统计同成绩学生人数 【编程语言】2015年07月13日js判断鼠标移动方向【Web前端】2015年02月03日《TCPIP详解卷2:实现》笔记--UDP:用户数据报协议【编程语言】2014年12月22日Cookie、Session 【移动开发】2015年08月30日JS按字节截取字符长度实例2014年01月29日基于C++的苹果apns消息推送实现(2) 【数据库】2015年03月24日工程师开发穿戴式感测戒指,可隔空写字回讯息、挂电话 ,,2017年12月07日Go语言time包的练习及封装 【系统运维】2015年01月19日TomyoneyearofEnglishlearning 【移动开发】2015年02月09日LAMP环境安装包,XAMPP1.8.0发布 ,,2016年06月23日【Elasticsearch】索引管理(二) 【综合】2014年11月26日IE7提供XMLHttpRequest对象为兼容2014年01月29日OCP-1Z0-052-V8.02-96题2016年11月22日华为机试—“十七进制”转“十进制” 【综合】2014年12月29日iWatch应用开发-oc篇 【编程语言】2015年07月24日AndroidCamera实时滤镜(四) 【编程语言】2015年04月28日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)