Java Web 网络商城案例演示三、(注册页面功能实现)
发布日期:2021-06-29 15:01:09
浏览次数:2
分类:技术文章
本文共 10537 字,大约阅读时间需要 35 分钟。
dao和service的创建和实现
1、在dao下创建接口UserDao,在dao下创建一个包daoimpl在这个包下创建一个类UserDaoImpl实现UserDao类 2、在service下创建接口UserService,在service包下创建一个包serviceImpl,在这个包内创建一个类实现UserService该接口 在Servlet下创建一个UserServlet并继承BaseServletpackage cn.itzheng.store.web.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itzheng.store.web.base.BaseServlet;/** * Servlet implementation class UserServlet */public class UserServlet extends BaseServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}
在domain下创建User类,要根据对应user表的数据库创建
package cn.itzheng.store.domain;import java.util.Date;public class User { // 安装数据库创建 private String uid; private String password; private String name; private String email; private String telephone; private Date birthday; private String sex; private int state; private String code; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getState() { return state; } public void setState(int state) { this.state = state; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public User() { // TODO Auto-generated constructor stub } public User(String uid, String password, String name, String email, String telephone, Date birthday, String sex, int state, String code) { super(); this.uid = uid; this.password = password; this.name = name; this.email = email; this.telephone = telephone; this.birthday = birthday; this.sex = sex; this.state = state; this.code = code; } @Override public String toString() { return "User [uid=" + uid + ", password=" + password + ", name=" + name + ", email=" + email + ", telephone=" + telephone + ", birthday=" + birthday + ", sex=" + sex + ", state=" + state + ", code=" + code + "]"; }}
功能:用户注册:
开发约定:
为了项目管理方便,不会从客户端直接发起到jsp页面。 先请求到Servlet,在由Servlet转发到JSP页面。1、页面路径跳转
在index。
UserServlet先执行父类的init方法和service方法,之后在执行该方法, jsp的method 会统一发现这里的,并发送到父类BaseServlet的service 方法当中 BaseServlet通过this.getclass的方式获取到该UserServlet类字节码文件名获取到该方法而执行该方法(执行什么方法由jsp页面传入的method来决定)package cn.itzheng.store.web.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itzheng.store.web.base.BaseServlet;/** * Servlet implementation class UserServlet */public class UserServlet extends BaseServlet { public String registUI(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub return "/jsp/register.jsp"; }}
上面页面点击注册之后跳转到对应的注册页面
2、注册功能原理分析
3、开发步骤约定(普通MVC功能)
(1)准备工作(表单属性设置,链接的拼接,Ajax编写)
准备工作实现完毕之后,可以从客户端向服务端发起请求。 (2)实现Servlet 明确要实现的功能,中文注释,代码 (3)service_dao (4)jsp页面 PS:为了方便断点调试eclipse==》window===》 preferences ====》4、步骤实现
注册页面改变
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>会员注册 会员注册USER REGISTER
setAttribute这个方法,在JSP内置对象session和request都有这个方法,这个方法作用就是保存数据,然后还可以用getAttribute方法来取出。
比如现在又个User对象,User curruser = new User(“zhangsan”, 20, “男”); 1,request.setAttribute(“curruser”, curruser)这个方法是将curruser这个对象保存在request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的话,那些框架标签也可以获取到,比如struts标签,还有jstl。如果这你都不会的话,那么你可以在jsp页面编写java小脚本来获取:<% User myuser = (User)request.getAttribute(“curruser”)%>,在jsp页面显示值:<%=myuser.getName()%>。 2,session.setAttribute(“curruser”, curruser)。这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。
UserServlet -->userRegist
依次实现service和daopackage cn.itzheng.store.web.servlet;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.converters.DateConverter;import cn.itzheng.store.domain.User;import cn.itzheng.store.service.UserService;import cn.itzheng.store.service.serviceImpl.UserServiceImpl;import cn.itzheng.store.utils.MyBeanUtils;import cn.itzheng.store.utils.UUIDUtils;import cn.itzheng.store.web.base.BaseServlet;/** * Servlet implementation class UserServlet */public class UserServlet extends BaseServlet { // jsp的method 会统一发现这里的,并发送到父类的service 方法当中 // 先执行父类的init方法和service方法,之后在执行该方法, // BaseServlet通过this.getclass的方式获取到该类字节码文件名获取到该方法而执行该方法(执行什么方法由jsp页面传入的method来决定) public String registUI(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub return "/jsp/register.jsp"; } // userRegist public String userRegist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception { // 接收业务注册功能 // 遍历map Mapmap = request.getParameterMap();// 获取页面上的键值对数据 User user = new User(); user.setUid(UUIDUtils.getId()); user.setState(0); user.setCode(UUIDUtils.getCode()); MyBeanUtils.populate(user, map);// 调用MyBeanUtils的populate静态方法 System.out.println(user); /* * // 1_创建时间类型的转换器 DateConverter dt = new DateConverter();// * 用来设置BeanUtils当中对应的获得时间的格式 // 2_设置转换的格式 dt.setPattern("yyyy-MM-dd"); // * 3_注册转换器 ConvertUtils.register(dt, java.util.Date.class); * * BeanUtils.populate(user, map);//将map当中的数据通过populate放入到user * * System.out.println(user); * * Set keySet = map.keySet();// 将map当中的key集合放入到keySet的set集合当中 * Iterator iterator = keySet.iterator(); while (iterator.hasNext()) { * String str = iterator.next();// 获取到每一个key System.out.println(str); String[] * strs = map.get(str);// 通过键获取到每一个值 for (String string : strs) { * System.out.println(string); } System.out.println(); * * } */ // 调用业务注册功能 UserService userservice = new UserServiceImpl(); try { userservice.userRegist(user); // 注册注册成功,向用户邮箱发送信息,跳转到提示页面 // 发送邮件 // request.setAttribute("msg", "用户注册成功,请激活"); } catch (Exception e) { // 注册失败,跳转到提示页面 request.setAttribute("msg", "用户注册失败,请重新注册"); } return "/jsp/info.jsp"; }}
package cn.itzheng.store.service;import java.sql.SQLException;import cn.itzheng.store.domain.User;public interface UserService { void userRegist(User user) throws SQLException;}
package cn.itzheng.store.service.serviceImpl;import java.sql.SQLException;import cn.itzheng.store.dao.UserDao;import cn.itzheng.store.dao.daoImpl.UserDaoImpl;import cn.itzheng.store.domain.User;import cn.itzheng.store.service.UserService;public class UserServiceImpl implements UserService { @Override public void userRegist(User user)throws SQLException { // TODO Auto-generated method stub // 实现注册功能 UserDao userDao = new UserDaoImpl(); userDao.userRegist(user) ; }}
package cn.itzheng.store.dao;import java.sql.SQLException;import cn.itzheng.store.domain.User;public interface UserDao { void userRegist(User user) throws SQLException;}
package cn.itzheng.store.dao.daoImpl;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import cn.itzheng.store.dao.UserDao;import cn.itzheng.store.domain.User;import cn.itzheng.store.utils.JDBCUtils;public class UserDaoImpl implements UserDao { @Override public void userRegist(User user) throws SQLException { // TODO Auto-generated method stub String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?);"; QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); // 将user当中的数据放入到Object对象的数组当中 Object[] params = { user.getUid(), user.getUsername(), user.getPassword(), user.getName(), user.getEmail(), user.getTelephone(), user.getBirthday(), user.getSex(), user.getState(), user.getCode() }; qr.update(sql, params);// 通过dbutils当中QueryRunner的update方法将数据与对应的SQL语句的问号匹配 }}
转载地址:https://code100.blog.csdn.net/article/details/104843661 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月19日 02时54分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
大学老师的月薪多少?实话实说:4万多一点……
2019-04-29
2020年电赛题目,命题专家权威解析!
2019-04-29
写论文,这个神器不能少!
2019-04-29
现在做硬件工程师还有前途吗?
2019-04-29
华为被超越!这家公司成中国最大智能手机制造商,不是小米!
2019-04-29
芯片为什么持续缺货?
2019-04-29
美国无人机在火星首飞成功,创造历史,3米飞行高度悬停30秒
2019-04-29
缺货涨价很久的MCU的国产和国外厂家汇总!(80家)
2019-04-29
华为重磅反击,鸿蒙来了!
2019-04-29
常用电子接口大全,遇到不认识的,就翻出来对照辨认!
2019-04-29
芯片IC附近为啥要放0.1uF的电容?
2019-04-29
电赛 | 19年全国一等奖,北航学子回忆录。
2019-04-29
电赛 | 19年全国一等奖,北航学子回忆录(上)
2019-04-29
电赛 | 19年全国一等奖,北航学子回忆录(下)
2019-04-29
突破!台积电1nm芯片,有了新进展。
2019-04-29
一文读懂全系列树莓派!
2019-04-29
自制一个害羞的口罩,见人就闭嘴,戴着可以喝奶茶
2019-04-29
聊聊我是如何编程入门的
2019-04-29
J-Link该如何升级固件?
2019-04-29
485通信自动收发电路,历史上最详细的解释
2019-04-29