1.现在在上面一章的基础上,我们引入一个address表,该表记录person类的地址,address表的格式如下所示 现在person类要和address表想关联,得到当前联系人的住宅地址,我们应该在person表中增加一个aid的字段,aid的值来自于address中 现在我们执行下面的操作: 我们如何通过代码把上面的结果集选择出来了. 可以使用MapHandle类来实现 我们来看下面的代码: package com.weiyuan.test; public class Address {…
1.首先安装数据库,在windows上安装和在unix上面安装环境不一样,我在自己的本地电脑上安装,安装成功之后,如果使用navicat远程工具访问,需要允许mysql远程能被访问 方法二.直接授权(推荐) 从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器: # mysql -u root -proot mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassw…
1.现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core&…
现在框架已经做好了,即下来我们要对页面进行装饰了,第一步给每一个元素添加id 1.最外面的div添加id为divMain 2.第二个div添加id为divTitle,里面的span对应的id为spanTitle 3.第三个div添加id为divBody,里面的table对应的id为tableForm 4.table里面对应的input 对应的id的名称就是其那么对应的名称 添加的id如下: <%@ page language="java" contentType="te…
1.首先安装mysql 创建项目所需的数据库,直接运行项目提供的goods.sql文库 2.myeclipse创建一个web project ,项目的名称是goods 把视频中提供的项目原型下的提供的模板下的src和web-root下的文件拷贝到我们刚刚创建的goods项目中 然后把web-inf文件夹下面的lib下的jar包添加到工程中 1.创建模块的包 包安装公司+项目名称+项目模块+分层来创建 公司名称:com.weiyuan 项目名称goods 项目模块:user用户模块 categor…
我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding(“utf-8”)方法来设计编码:如果是GET请求,我们需要自己手动来处理编码问题.如果我们使用了EncodingFilter,那么就处理了POST和GET请求的编码问题 1.设置过滤器首先需要导入下面的jar包 itcast-tools-1.4.2.jar 这个jar包封装了下面的功能 把jar包添加到项目的工程中 2.过滤器的servlet已经在上面的jar包中写好了.我们只需要在web.xml…
1 前两天我们学习了user用户模块和图书的分类模块,接下来我们学习图书模块 图书模块的功能主要是下面的功能: 2 接下来我们创建对应的包 我们来看看对应的数据库表t_book CREATE TABLE `t_book` ( `bid` char(32) NOT NULL, `bname` varchar(200) default NULL, `author` varchar(50) default NULL, `price` decimal(8,2) default NULL, `currPr…
1.我们来看程序的代码 数据库层: 1.通过激活码查找到对应的用户 2.设置用户的激活状态 2.业务层 1.通过数据库接口通过验证码得到对应的用户 2.判断当用户是否为空,如果没有通过激活码查找到对应的用户,说明用户点击邮箱上传的激活码是无效的,这个时候说明激活失败,抛出一个业务失败异常,说明激活码无效 3.如果用户不为空,并且用户的激活状态是没有激活的,将用户的激活状态设置成true 4.如果用户不为空,但是用户的激活状态是已经激活的,抛出一个业务失败异常,提示用户无需重复激活 3.servl…
1.当用户在界面提交注册提交的时候,我们在UerServlet来实现具体的业务方法 标准demo: 1CommonUtils CommonUtils类就两个方法: lString uuid():生成长度32的随机字符,通常用来做实体类的ID.底层使用了UUID类完成: toBean(Map, Class<T>):把Map转换成指定类型的Bean对象.通常用来获取表单数据(request.getParameterMap())封装到JavaBean中,底层使用了common-beanutils.注…
1.发送邮件 发送邮件的时候的参数我们都写在了配置文件中,配置文件放在src目录下,可以使用类加载器进行加载该数据 //向注册的用户发送邮件 //1读取配置文件 Properties properties = new Properties(); try { properties.load(this.getClass().getClassLoader().getResourceAsStream("email_template.properties")); } catch (IOExcep…
regist.jsp页面中有异步请求服务器来对表单进行校验: l  校验登录名是否已注册过: l  校验Email是否已注册过: l  校验验证码是否正确. 这说明在UserServlet中需要提供相应的方法来支持前端的请求. 我们需要到数据库查询用户名.邮箱是否注册,到session中检查验证码是否正确. 在进行数据库操作之前,还需要对user表中的字段进行添加处理 因为其他页面中对用户的操作还设计到修改新的密码.确认密码.验证码等几个字段,我们需要在user表中添加下面的几个字段 packa…
1.现在要为user用户模块创建类 用户模块功能包括:注册.激活.登录.退出.修改密码. User类对照着t_user表来写即可.我们要保证User类的属性名称与t_user表的列名称完全相同. 我们来创建User类 package com.weiyuan.goods.user.domian; public class User { private String uid; //主键 private String loginname;// 登陆名称 private String loginpass…
1.以前进行操作的时候,例如我们进行登陆操作我们使用LoginServlet进行处理,进行注册操作我们使用RegisterServlet,很多业务的操作的时候我们就要定义很多个Servlet 有了BaseServlet我们可以把业务操作都放在一个Servlet中进行处理 通常,写一个项目可能会出现N多个Servlet,而且一般一个Servlet只有一个方法(doGet或doPost),如果项目大一些,那么Servlet的数量就会很惊人.为了避免Servlet的“膨胀”,我们写一个BaseServ…
1.当用户点击退出的时候,跳转到登陆页面 当用户点击退出的时候,需要将session中保存的登陆的用户销毁掉 当用户点击退出的时候,调用UserServlet的quit方法 退出按钮在top.jsp中,我们修改top.jsp页面的代码: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c&qu…
1.我们来看看后台操作的业务流程 每一层都按照上面的步骤来进行实现: 这里我们要使用commUtils.toBean把表单提交的参数封装成User对象,必须保证User对象中的字段和表单提交的字段的名称是一模一样的 <tr> <td align="right">新密码:</td> <td><input class="input" type="password" name="newpa…
1.当在登陆页面点击登陆按钮的时候,会调用UserServlet的login方法,我们要在login.jsp中进行配置 2.要在login.jsp中处理Servlet在后台业务操作之后forward到login.jsp中显示的错误信息,例如用户名密码错误.该用户未激活等,这个时候就要修改login.jsp页面 我们来看看login.jsp的代码 <%@ page language="java" import="java.util.*" pageEncoding…
/*1.第一步将用户提交的参数封装成javabean对象 * *2.对提交的参数的进行合法性的校验 * *3.通过用户名和密码去查找得到user对象 *如果user对象为null,说明用户名和密码不正确,重定向到login.jsp提示用户名和密码错误 *如果user对象不为null,查看当前用户的激活状态,如果当前用户没有被激活,提示当前用户没有被激活,重定向到login.jsp提示 *如果user对象不为null,并且当前用户处于激活状态,把当前用户保存到session中,显示当前用户是谁 *…
首先页面去加载的时候,会去加载main.js文件,我们在加载left.jsp.top.jsp body.jsp,现在我们修改main.jsp的代码,让它去请求的时候去访问的是不在直接去访问left.jsp,而是去访问CategoryServlet的findAll方法,将查询的分类的结果在left.jsp中显示出来. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&qu…
我们在上面实现了数据库层的代码,现在我们来实现业务层和Servlet层的代码:业务层的代码如下: package com.weiyuan.goods.category.service; import java.sql.SQLException; import java.util.List; import com.weiyuan.goods.category.dao.CategoryDao; import com.weiyuan.goods.category.domain.Category; pu…
我们按照表示的设计 以及: package com.weiyuan.goods.category.domain; import java.util.List; public class Category { private String cid;//主键 private String cname;//分类的名称 private String desc;//分类的描述 private Category parent ;//父分类,对应表的pid字段,pid是一个外键 private List<Ca…
1.当用户注册成功之后,会给用户发送邮件,当用户点击邮件的激活按钮的时候,会调用UserServlet中的activation的方法,并且会把激活码传递到后台,后台业务层对业务进行操作…
1.当从服务器返回的注册错误信息的时候,我们在注册界面需要将错误信息显示出来 我们需要修改regist.jsp页面的代码:其中error是一个haspmap,c标签对map的属性可以直接使用 ${errors.loginname}这种形式 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ tagli…
1.点击注册之后将提交的信息传递到UserServlet的public String regist方法进行处理,然后将东西通过service进行处理 业务流程:…
1 .现在我们要在regist.js中实现ajax的功能,使用用户名到后台查询是否注册,邮箱是否到后台注册,验证码是否正确的功能 我们来看regist.js的代码 //该函数在html文档加载完成之后会调用 $(function() { /* * 变量所有的错误信息,调用一个方法来决定是否显示错误信息 * */ $(".errorClass").each(function() { showError($(this));//$(this)表示当前遍历的对象 }); //切换注册按钮的图片…
当输入框输入数据之后,当输入框失去焦点的时候,我们需要对输入的数据进行校验 l  用户名校验: 用户名不能为空: 用户名长度必须在3 ~ 20之间: 用户名已被注册(需要异步访问服务器). l  登录密码校验: 密码不能为空: 密码长度必须在3 ~ 10之间: l  确认密码校验: 确认密码不能为空: 两次输入不一致: l  Email校验: Email不能为空: Email格式错误(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3…
实现当光标输入在输入输入框的时候,将后面的内容隐藏,例如在用户名称输入信息的时候,后面的用户名不能为空隐藏 我们来看看regist.js的代码: //该函数在html文档加载完成之后会调用 $(function() { /* * 变量所有的错误信息,调用一个方法来决定是否显示错误信息 * */ $(".errorClass").each(function() { showError($(this));//$(this)表示当前遍历的对象 }); //切换注册按钮的图片 $("…
我们要实现立即注册这个按钮,光标获得焦点是一张图片,光标失去焦点的时候是另外一张图片 我们需要在文档加载完成之后,设置该事件hover事件 hover(over,out)这是jQuery的一个模仿悬停事件,即当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数.当鼠标移出这个元素时,会触发指定的第二个函数.而且,会伴随着对鼠标是否仍然处在特定元素中的检测,如果是,则会继续保持“悬停”状态,而不触发移出事件. 我们来看regist.js的代码: //该函数在html文档加载完成之后会调用 $(…
我们现在要实现点击换一张的时候实现验证码的修改 我们首先在html添加函数点击事件: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>…
在上一章中我们显示的效果如下所示: 上面后面都有错误的红色×的显示,这样是不对的,我们要解决该问题 我们要循环遍历每一个错误的信息,看它的内容有没有,如果有内容我们就显示错误的×,如果没有就不显示× 我们新建一个js文件来完成上面的操作: 然后在html中加载该regist.js文件 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8&…
我们来分析下这个页面的代码如何实现: 我们来分下下层次结构: 1.首先最外层是一个大的div,然后又包括两个小的div,第一个div中包括一个span,第二个div是一个table表 我们来看程序的代码: jsps文件夹对应的是前端的页面,user对应的是用户的jsp页面,在该页面中个新建立一个regist.jsp文件 我们在这里里面编写html代码 input type="submit"是提交表格按钮,使用系统默认的风格,input type="image"也能提…