商城网站设计(一)

news/2024/5/9 21:35:06/文章来源:https://blog.csdn.net/W_Meng_H/article/details/80067311

注册的基本代码实现

一、用户注册

基本点注册代码实现:

分析:表单提交数据 --> web层收集数据 --> 封装数据 --> 传递数据 --> 三层架构代码

GitHub代码下载链接:https://github.com/Vmetrio/Register


1、表单提交数据



2、web层

package com.itshop.web.servlet;import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.security.Provider.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;import javax.mail.MessagingException;
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.Converter;import com.itshop.domain.User;
import com.itshop.utils.CommonsUtils;
import com.itshop.utils.MailUtils;
import com.itshop.service.UserService;public class RegisterServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");//获得表单数据Map<String, String[]> properties = request.getParameterMap();User user = new User();try {//自己制定一个类型转换器(将String转成Date)ConvertUtils.register(new Converter() {@Overridepublic Object convert(Class clazz, Object value) {//将string转成dateSimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date parse = null;try {parse = format.parse(value.toString());} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return parse;}}, Date.class);//映射封装BeanUtils.populate(user, properties);} catch (IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}//private String uid;user.setUid(CommonsUtils.getUUID());//private String telephone;user.setTelephone(null);//private int state;//是否激活user.setState(0);//private String code;String activeCode = CommonsUtils.getUUID();user.setCode(activeCode);//将user传给service层UserService service = new UserService();boolean isRegistersuccess = service.regist(user);if(isRegistersuccess) {//跳转到注册成功页面response.sendRedirect(request.getContextPath()+"/registerSuccess.jsp");//发送激活邮件String emailMsg = "恭喜你注册成功,请点击下面的链接进行激活账户"+ "<a href='http://localhost:8080/Shop/active?activeCode="+activeCode+"'>"+"http://localhost:8080/Shop/active?activeCode="+activeCode+ "</a>";try {MailUtils.sendMail(user.getEmail(), emailMsg);} catch (MessagingException e) {e.printStackTrace();}}else {//registerFail.jspresponse.sendRedirect(request.getContextPath()+"/registerFail.jsp");}}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
3、封装数据
package com.itshop.domain;import java.util.Date;public class User {private String uid;private String username;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 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 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;}
}

4、传递数据

//将user传给service层
UserService service = new UserService();
boolean isRegistersuccess = service.regist(user);

5、三层架构代码

service层:

package com.itshop.service;import java.sql.SQLException;import com.itshop.dao.UserDao;
import com.itshop.domain.User;public class UserService {public boolean regist(User user) {UserDao dao = new UserDao();int row = 0;try {row = dao.regist(user);} catch (SQLException e) {e.printStackTrace();}return row>0?true:false;}//状态码激活public void active(String activeCode) {UserDao dao = new UserDao();try {dao.active(activeCode);} catch (SQLException e) {e.printStackTrace();}}public boolean checkUsername(String username) {UserDao dao = new UserDao();Long isExist = 0L;try {isExist = dao.checkUsername(username);} catch (SQLException e) {e.printStackTrace();}return isExist>0?true:false;}
}

Dao层:

package com.itshop.dao;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ScalarHandler;import com.itshop.domain.User;
import com.itshop.utils.DataSourceUtils;public class UserDao {public int regist(User user) throws SQLException {QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?)";int update = runner.update(sql,user.getUid(),user.getUsername(),user.getPassword(),user.getName(),user.getEmail(),user.getTelephone(),user.getBirthday(),user.getSex(),user.getState(),user.getCode());return update;}//状态码激活public void active(String activeCode) throws SQLException {QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());String sql = "update user set state=? where code=?";runner.update(sql,1,activeCode);;}public Long checkUsername(String username) throws SQLException {QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());String sql = "select count(*) from user where username=?";Long query = (Long) runner.query(sql, new ScalarHandler(), username);return query;}
}

二、表单校验

<!-- 引入表单校验插件 -->
<script src="js/jquery.validate.min.js" type="text/javascript"></script>
1、基本表单校验
<style>
.error{color:red
}
</style>
<script type="text/javascript">$(function() {$("#myform").validate({rules : {"username" : {"required" : true,"checkUsername" : true},"password" : {"required" : true,"rangelength" : [ 6, 12 ]},"repassword" : {"required" : true,"rangelength" : [ 6, 12 ],"equalTo" : "#password"},"email" : {"required" : true,"email" : true},"sex" : {"required" : true}},messages : {"username" : {"required" : "用户名不能为空","checkUsername" : "用户名已存在"},"password" : {"required" : "密码不能为空","rangelength" : "密码长度6-12位"},"repassword" : {"required" : "密码不能为空","rangelength" : "密码长度6-12位","equalTo" : "两次密码不一致"},"email" : {"required" : "邮箱不能为空","email" : "邮箱格式不正确"}}})});
</script> 

2、自定义表单校验
<script type="text/javascript">//自定义校验规则$.validator.addMethod(//规则的名称"checkUsername",//校验函数function(value,element,params){//定义一个标志var flag = false;//value:输入的内容//element:被校验的元素对象//params:规则对应的参数值//目的:对输入的username进行ajax校验$.ajax({"async":false,"url":"${pageContext.request.contextPath}/checkUsername","data":{"username":value},"type":"POST","dataType":"json","success":function(data){flag = data.isExist;}});return !flag;})$(function() {$("#myform").validate({rules : {"username" : {"required" : true,"checkUsername" : true},"password" : {"required" : true,"rangelength" : [ 6, 12 ]},"repassword" : {"required" : true,"rangelength" : [ 6, 12 ],"equalTo" : "#password"},"email" : {"required" : true,"email" : true},"sex" : {"required" : true}},messages : {"username" : {"required" : "用户名不能为空","checkUsername" : "用户名已存在"},"password" : {"required" : "密码不能为空","rangelength" : "密码长度6-12位"},"repassword" : {"required" : "密码不能为空","rangelength" : "密码长度6-12位","equalTo" : "两次密码不一致"},"email" : {"required" : "邮箱不能为空","email" : "邮箱格式不正确"}}});});
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_748445.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作系列之可爱屋早教中心网站重构

2010年下半年&#xff0c;经过朋友的推荐&#xff0c;有幸参与到可爱屋早教中心网站重构项目中。可爱屋早教中心在2010年业务经过一次大的升级&#xff0c;急需扩展招生渠道&#xff0c;因此网络招生自然而然提上了日程。他们的官网由以前的工程师建设好以后&#xff0c;托管在…

网站开发的基础知识笔记--wsdchong

时间&#xff1a;2020/4/21 前言&#xff1a;对HTTP的了解、对cookie和session的了解、response和request对象的了解 一、对HTTP的了解 1概述&#xff1a;HTTP&#xff08;超文本传输协议Hypertext transfer protocol&#xff09;。超文本&#xff1a;不仅传输文字&#xff…

用Java开发出网站,在其中输入中文,但是保存到MySQL数据库中却是????

前言&#xff1a; 前两部分是从mysql和eclipse的角度去解决&#xff0c;在解决的过程中学到了之前没设计到的查看和修改数据库或数据表的字符集的知识。 后一部分是掌握了前两步后&#xff0c;进行的新一轮解决问题的探索。其中遇到的细枝末节的bug&#xff0c;也一一解决&am…

网站检测之防注入绕过的十一种技巧

2019独角兽企业重金招聘Python工程师标准>>> 1、运用编码技术绕过 如URLEncode编码&#xff0c;ASCII编码绕过。 例如or 11即 %6f%72%20%31%3d%31 而Test也可以为 CHAR(101)CHAR(97)CHAR(115)CHAR(116) 2、通过空格绕过 如两个空格代替一个空格&#xff0c;用Tab代替…

行业分析常用到的21个网站

行业分析常用到的21个网站 前言 今天写《就业乱世&#xff0c;如何正面应战&#xff01;【所长】》笔记的时候在里面找到了作者分析行业常用到的21个网站。于是我也看一看。还是有不少启发的。让我一目了然知道对哪些公司看哪些数据。我之前接触得迷迷糊糊的&#xff0c;知道…

静态博客网站——vuepress功能进化

vuepress进化史 前言 昨天回顾笔记的时候。想起了我一个月前的尝试的vuepress&#xff0c;之前因为部署没成功&#xff0c;没找到原因就闲置了一下。昨天心血来潮&#xff0c;研究了一下。没想到一下子就解决了。 真的是黎明前最黑暗&#xff0c;离成功就差一步。但是也正如人…

一个把html控件封装的很好的网站bootstrap

最近一直忙于写前台代码突然发现twitter提供了一个开源的工具里面提供了一些非常好的css文件和jquery文件&#xff0c;嘿嘿&#xff0c;现在拿出来分享一下&#xff0c;下面来讲具体应用在MVC的操作 1、先把bootstrap的包下载下来 地址是http://twitter.github.com/bootstrap/&…

商业分析的50个网站和分析方法

商业分析的50个网站和分析方法 前言 今天看到一个内容&#xff0c;感觉还可以&#xff0c;干货多。 摘要 一个questmobile&#xff0c;一个买购网。用来看互联网的研报以及看行业龙头企业。 摘要 下次了解企业的时候&#xff0c;先用爱企查查公司的财务情况&#xff1b;然后用…

查论文的网站

查论文的网站 前言 今天看知乎的时候看到一个内容&#xff0c;感觉不错&#xff0c;对我有用。记录一下。 《你写论文时发现了哪些非常神的网站&#xff1f;》 用网页打开知乎的时候如果弹出登录弹窗&#xff0c;且不能叉掉&#xff0c;可以先刷新一下&#xff0c;然后不断按…

解决访问github等网站慢或下载失败的问题

最近老大push项目&#xff0c;正常的git clone每次都是下载一部分就断掉了。下面介绍网上找到的两种方法&#xff1a; 方法一&#xff1a; 1.打开网站https://www.ipaddress.com/ &#xff1b; 2.分别在上面打开的网站中查找github.com和github.global.ssl.fastly.net的IP地址&…

ASP.NET 中得到网站绝对路径的几种方法

转载于:https://www.cnblogs.com/weapon/archive/2013/01/19/2867235.html

自定义SharePoint新网站创建过程 (二)

首先澄清一个概念。在一个SharePoint网站的网站设置页面中&#xff0c;使用“将网站另存为模板”链接&#xff0c;管理员可以将整个网站保存为一个扩展名为.stp格式的模板。使用这个stp网站模板&#xff0c;管理员可以重复创建同样结构&#xff08;和内容&#xff09;的新网站。…

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

开篇语&#xff1a;最近在弄ocx控件发布到asp.net网站上使用&#xff0c;就是用户在使用过程中&#xff0c;自动下载安装ocx控件。&#xff08;此文章也是总结了网上好多人写的文章&#xff0c;我只是汇总一下&#xff0c;加上部分自己的东西&#xff0c;在这里感谢所有在网上发…

[方法篇](禁止YisouSpider|EasouSpider|EtaoSpider)搜索引擎蜘蛛给网站带来的危害,有效指引爬虫对应的措施...

搜索引擎蜘蛛给网站带来的危害&#xff0c;有效指引爬虫对应的措施[方法篇](禁止YisouSpider|EasouSpider|EtaoSpider)上一遍文章《搜索引擎蜘蛛给网站带来的危害&#xff0c;有效指引爬虫对应的措施(最准确搜索引擎蜘蛛名称)》下一篇“如何更高效发现&屏蔽搜索引擎蜘蛛”实…

以电商网站为例,谈大型分布式架构设计与优化

本文大纲&#xff1a; 1. 使用电商案例的原因 2. 电商网站需求 3. 网站初级架构 4. 系统容量估算 5. 网站架构分析 6. 网站架构优化 本文主题为电商网站架构案例&#xff0c;将介绍如何从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的、可供参考的分布式架…

table改网站框的大小

table 当网站出现这样上下不一样宽的时候 修改的时候要修改最外部的table 修改完后效果转载于:https://blog.51cto.com/hmlwl/1398906

Windows Azure系列 -《基础篇》- 创建并发布网站

打开Windows Azure管理门户&#xff0c;点击左侧边栏网站标签&#xff0c;然后点击“创建网站”按钮&#xff1a;在接下来的配置页面输入预想的URL&#xff0c;并选择宿主计划和服务所在位置&#xff1a;点击“创建网站”按钮后就会马上进行创建&#xff0c;很快完成创建并运行…

C++使用libCurl访问12306网站实现登录查询车次信息

作为学习libcurl的小作业&#xff0c; 使用libcurl访问12306&#xff0c;成功获取验证码&#xff0c;目前不能自动识别&#xff0c;需要手动输入&#xff1a;

网站分布式架构

原文&#xff1a;http://xubaoguo.iteye.com/blog/1882030 摘要: 互联网的网站和大部分企业管理软件一样都是使用B/S架构模型&#xff0c;但是大型的公共网站B/S架构会更加复杂&#xff0c;对架构人员的要求更高&#xff0c;今天我想在自己博客里聊聊我设计的网站的B/S技术架构…

网站死链接检测查询工具

网站死链接检测查询工具 什么是网站死链接&#xff1a;死链接就是指网站的链接不能正常被访问&#xff0c;如A页面上面有一个B页面的链接&#xff0c;现在通过A页面的链接访问B页面&#xff0c;可是B页面已经删除或者转移&#xff0c;现在通过A页面的链接访问到B页面并没有出现…