织梦官方网站,网站导航优化,简约 时尚 高端 网站建设,wordpress面包屑标签1. 生鲜后台管理系统-注册功能
1.1. 注册功能 #xff08;1#xff09;创建注册RegisterServlet#xff0c;接收form表单中的参数。 #xff08;2#xff09;service创建一个userService处理业务逻辑。 #xff08;3#xff09;RegisterServlet将参数传递给ser…1. 生鲜后台管理系统-注册功能
1.1. 注册功能 1创建注册RegisterServlet接收form表单中的参数。 2service创建一个userService处理业务逻辑。 3RegisterServlet将参数传递给servie层。 4Dao层创建一个userDao操作数据库。 5userService调用dao层userDao将用户注册信息加入到数据库中。 6注册成功后RegisterServlet调用请求转发到login、jsp界面。
1.2. 步骤 1创建RegisterServlet
package com.zzs.szsd.web;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
WebServlet(name RegisterServlet,urlPatterns /register)
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String id request.getParameter(id);String name request.getParameter(name);String password request.getParameter(password);String email request.getParameter(email);User usernew User();user.setName(name);user.setPassword(password);user.setEmail(email);UserService userServicenew UserService();boolean register userService.register(user);if (register) {response.sendRedirect(request.getContextPath()/login.jsp);}else {response.setContentType(text/html;charsetutf-8);response.getWriter().write(注册失败);}}protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {}
}2创建UserService
package com.zzs.szsd.service;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.dao.UserDao;
import java.sql.SQLException;
public class UserService {/*** method:register 用户注册* params:[name, password, email]* return: boolean*///1. 判断注册用户是否存在public boolean register(User user) {boolean registerfalse;UserDao userDao new UserDao();boolean checkUser userDao.checkUser(user.getName());//2. 如果不存在就将用户信息添加到数据库if (checkUser) {register userDao.register(user);}return register;}/*** method:login 用户登录* params:[name, password]* return: void*/public User login(String name, String password) throws SQLException {UserDao userDaonew UserDao();User user userDao.login(name, password);return user;}
}3创建UserDao
package com.zzs.szsd.dao;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.zzs.szsd.bean.User;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
public class UserDao {/*** method:checkUser 检查用户是否存在* params:[name]* return: boolean*/public boolean checkUser(String name){try {ComboPooledDataSource dataSourcenew ComboPooledDataSource();QueryRunner queryRunnernew QueryRunner(dataSource);String sqlselect name from user where name?;User user queryRunner.query(sql, new BeanHandlerUser(User.class),name);//如果没有查询到数据 说明这个用户名没有注册过if (usernull) {return true;}else {return false;}} catch (SQLException e) {e.printStackTrace();return false;}}/*** method:register 用户注册* params:[name, password, email]* return: boolean*/public boolean register(User user) {try {ComboPooledDataSource dataSourcenew ComboPooledDataSource();QueryRunner queryRunnernew QueryRunner(dataSource);String sqlinsert into user values(null,?,?,?);int row queryRunner.update(sql, user.getName(), user.getPassword(), user.getEmail());//行数大于零说明注册成功if (row0) {return true;}else {return false;}} catch (SQLException e) {e.printStackTrace();return false;}}/*** method:login 查询数据库* params:[name, password]* return: void*/public User login(String name, String password) throws SQLException {ComboPooledDataSource dataSourcenew ComboPooledDataSource();QueryRunner queryRunnernew QueryRunner(dataSource);String sqlselect * from user where name? and password?;User user queryRunner.query(sql, new BeanHandlerUser(User.class),name,password);return user;}
}4创建User实体类
package com.zzs.szsd.bean;public class User {private int id;private String name;private String password;private String email;public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}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;}
}5修改c3p0-config.xml
?xml version1.0 encodingutf-8 ?
c3p0-config!-- 默认配置如果没有指定则使用这个配置 --default-configproperty namedriverClasscom.mysql.jdbc.Driver/propertyproperty namejdbcUrljdbc:mysql://localhost:3306/fresh?useSSLfalse/propertyproperty nameuserroot/propertyproperty namepasswordadmin123/property!-- 初始化池大小 --property nameinitialPoolSize10/property!-- 最大空闲时间 --property namemaxIdleTime30/property!-- 最多有多少个连接 --property namemaxPoolSize15/property!-- 最少几个连接 --property nameminPoolSize5/property!-- 每次最多可以执行多少个批处理语句 --property namemaxStatements50/property/default-config!-- 命名的配置 --named-config name51zixue!--这里是设置配置文件的名字--property namedriverClasscom.mysql.jdbc.Driver/propertyproperty namejdbcUrljdbc:mysql://localhost:3306/fresh?useSSLfalse/propertyproperty nameuserroot/property!--mysql的登陆名--property namepasswordadmin123/property!--如果没密码就可以设置成property namepassword/property--property nameacquireIncrement5/property!-- 如果池中数据连接不够时一次增长多少个 --property nameinitialPoolSize10/propertyproperty nameminPoolSize5/propertyproperty namemaxPoolSize15/propertyproperty namemaxStatements0/propertyproperty namemaxStatementsPerConnection5/property !-- hes important, but theres only one of him --/named-config
/c3p0-config6login.jsp
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %
% page contentTypetext/html;charsetUTF-8 languagejava %
html langen
headmeta charsetUTF-8/titleDocument/titlescript typetext/javascript srcstatic/js/jquery-1.9.0.min.js/scriptscript typetext/javascript srcstatic/js/login.js/scriptlink hrefstatic/css/login2.css relstylesheet typetext/css/
/head
body
h1生鲜管理系统supV2017/sup
/h1div classlogin stylemargin-top: 50px;div classheaderdiv classswitch idswitcha classswitch_btn_focus idswitch_qloginhrefjavascript:void(0); tabindex7快速登录/a aclassswitch_btn idswitch_login hrefjavascript:void(0);tabindex8快速注册/adiv classswitch_bottom idswitch_bottomstyleposition: absolute; width: 64px; left: 0px;/div/div/divdiv classweb_qr_login idweb_qr_loginstyledisplay: block; height: 235px;!--登录--div classweb_login idweb_logindiv classlogin-boxdiv classlogin_formform actionuseraccept-charsetutf-8 idlogin_form classloginFormmethodpostinput typehidden namemethod valuelogin/input typehidden namedid value0/ input typehiddennameto valuelog/div classuinArea iduinArealabel classinput-tips foru帐号/labeldiv classinputOuter iduAreainput typetext idu namename value${cookie.name.value} classinputstyle//div/divdiv classpwdArea idpwdArealabel classinput-tips forp密码/labeldiv classinputOuter idpAreainput typepassword idp namepassword value${cookie.password.value} classinputstyle//div/divdiv stylemargin-left: 45px;margin-top: 10pxinput stylevertical-align: middle; typecheckbox valueyes nameremember记住密码br//divdiv stylepadding-left: 50px; margin-top: 20px;input typesubmit value登 录 stylewidth: 150px;classbutton_blue//div/form/div/div/div!--登录end--/div!--注册--div classqlogin idqlogin styledisplay: none;div classweb_loginform nameform2 idregUser accept-charsetutf-8actionregister methodpostinput typehidden nameto valuereg/ input typehiddennamedid value0/ul classreg_form idreg-uldiv iduserCue classcue快速注册请注意格式/divlilabel foruser classinput-tips2用户名/labeldiv classinputOuter2input typetext iduser namename maxlength16classinputstyle2//div/lililabel forpasswd classinput-tips2密码/labeldiv classinputOuter2input typepassword idpasswd namepassword maxlength16classinputstyle2//div/lililabel forpasswd2 classinput-tips2确认密码/labeldiv classinputOuter2input typepassword idpasswd2 namepassword2 maxlength16classinputstyle2//div/lililabel foremail classinput-tips2邮箱/labeldiv classinputOuter2input typeemail idemail nameemail classinputstyle2//div/lilidiv classinputAreainput typesubmit idregstylemargin-top: 10px; margin-left: 85px;classbutton_blue value同意协议并注册/ a href# classzcxytarget_blank.注册协议/a/div/lidiv classcl/div/ul/form/div/div!--注册end--
/div
/body
/body
/html1.3. 效果 2. 生鲜后台管理系统-登录功能
2.1. 登录功能 1创建注册LoginServlet接收form表单中的参数。 2LoginServlet将参数传递给servie层。 3userService调用dao层userDao将用户注册信息加入到数据库中。 4登录成功后跳转到分类界面。
2.2. 步骤 1新建LoginServlet
package com.zzs.szsd.web;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
WebServlet(name LoginServlet,urlPatterns /login)
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name request.getParameter(name);String password request.getParameter(password);UserService userServicenew UserService();User usernull;try {//调用service中登录方法user userService.login(name, password);} catch (SQLException e) {e.printStackTrace();}System.out.println(wedwuser);if (user!null){//登录成功跳转生鲜种类列表界面response.sendRedirect(request.getContextPath()/category-list.jsp);}else {//登录失败提示response.setContentType(text/html;charsetutf-8);response.getWriter().write(用户登录失败);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}// An highlighted block
var foo bar;3新建category-list.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width,initial-scale1titleindex/titlelink relstylesheet hrefstatic/css/bootstrap.min.cssstyle typetext/cssbody{ font-family: Microsoft YaHei;}/*.panel-body{ padding: 0; }*//style
/head
body
div classjumbotrondiv classcontainerh3——生鲜管理系统/h3/div
/div
div classcontainerdiv classmaindiv classrow!-- 左侧内容 --div classcol-md-3div classlist-groupa href${pageContext.request.contextPath}/category-list.jsp classlist-group-item text-center active生鲜列表/aa href${pageContext.request.contextPath}/category-add.jsp classlist-group-item text-center 新增生鲜/a/div/div!-- 右侧内容 --div classcol-md-9!-- 成功提示框 --div classalert alert-success alert-dismissible rolealertbutton typebutton classclose data-dismissalertspan aria-hiddenfalsetimes;/spanspan classsr-onlyClose/span/buttonstrong成功/strong 操作成功提示/div!-- 失败提示框 --div styledisplay: none classalert alert-danger alert-dismissible rolealertbutton typebutton classclose data-dismissalertspan aria-hiddentruetimes;/spanspan classsr-onlyClose/span/buttonstrong失败/strong 操作失败提示/div!-- 自定义内容 --div classpanel panel-defaultdiv classpanel-heading生鲜列表/divdiv classpanel-bodytable classtable table-striped table-responsive table-hovertheadtrth编号/thth名称/thth添加时间/thth类别/thth产地/thth width120操作/th/tr/theadtbodyc:forEach items${page.list} varcategorytrth${category.c_id}/thtd${category.c_name}/tdtd${category.createtime}/tdc:if test${category.type0} td未知/td/c:ifc:if test${category.type1} td猪牛羊肉/td/c:ifc:if test${category.type2} td海鲜水产/td/c:iftd${category.place}/tdtd%--a href详情/a--%a href${pageContext.request.contextPath}/category?methoddeleteCategoryc_id${category.c_id}删除/aa href${pageContext.request.contextPath}/category-update.jsp?c_id${category.c_id}c_name${category.c_name}type${category.type}place${category.place}修改/a/td/tr/c:forEach/tbody/table/div/div%--nav--%%--ul classpagination pull-right--%%--li classpreviousa href#laquo;/a/li--%%--c:forEach begin1 end${pageBean.totalPage} varpage--%%--lia href#${page}/a/li--%%--!-- 判断是否是当前页 ----%%--lt;%ndash;c:if test${pagepageBean.currentPage }ndash;%gt;--%%--lt;%ndash;li classactivea hrefjavascript:void(0);${page}/a/lindash;%gt;--%%--lt;%ndash;/c:ifndash;%gt;--%%--lt;%ndash;c:if test${page!pageBean.currentPage }ndash;%gt;--%%--lt;%ndash;lia href${pageContext.request.contextPath}/productListByCid?cid${cid}currentPage${page }${page }/a/lindash;%gt;--%%--lt;%ndash;/c:ifndash;%gt;--%%--/c:forEach--%%--lia href#raquo;/a/li--%%--/ul--%%--/nav--%!--分页 --navul classpagination pull-rightli classpreviousa href#laquo;/a/lic:forEach begin1 end${page.totalPage} varPagelia href${pageContext.request.contextPath}/category?methodgetCategoryListcurrentPage${Page}currentCount10${Page}/a/li/c:forEachlia href#raquo;/a/li/ul/nav!-- 分页结束 --%--ul classpagination pull-right--%%--li classpreviousa href#laquo;/a/li--%%--c:forEach begin1 end${pageBean.totalPage1} varpage--%%--lia href${pageContext.request.contextPath}/category?methodgetCategoryListcurrentPage${page}currentCount10${page}/a/li--%%--/c:forEach--%%--lia href#raquo;/a/li--%%--/ul--%/div/div/div
/div
!-- 尾部 --
div classjumbotron style margin-bottom:0;margin-top:105px;div classcontainerspancopy; 2016 Saitmob/span/div
/divscript srcstatic/js/jquery-3.1.0.min.js/scriptscript srcstatic/js/bootstrap.min.js/script
/body
/html2.3. 效果 3. 生鲜后台管理系统-记住密码功能
3.1. 记住密码 1界面中添加checkbox控件。 2如果用户登录成功这时候就去获取控件是否被选中。 3如果选中 那么我们需要将用户名和密码。 4保存在cookie中保存到cookie中 同时需要对cookie做持久化防止浏览器关闭的时候cookie被销毁 5登录界面的jsp中 需要获取cookie中保存的信息并将获取到的信息填入到form表单中。 6这样就完成了记住密码的功能。
3.2. 步骤 1新建LoginServlet
package com.zzs.szsd.web;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
WebServlet(name LoginServlet,urlPatterns /login)
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String name request.getParameter(name);String password request.getParameter(password);UserService userServicenew UserService();User usernull;try {//调用service中登录方法user userService.login(name, password);} catch (SQLException e) {e.printStackTrace();}if (user!null){//登录成功后我们再获取是否保存密码的信息如果失败了保存密码就没有意义了String remember request.getParameter(remember);if (remember.equals(yes)){// 将用户名和密码加入到cookie中Cookie nameCookie new Cookie(name, name);Cookie passwordCookie new Cookie(password, password);//设置cookie的有效期 防止销毁nameCookie.setMaxAge(60*10);passwordCookie.setMaxAge(60*10);//将cookie发送给客户端保存response.addCookie(nameCookie);response.addCookie(passwordCookie);}//登录成功跳转生鲜种类列表界面response.sendRedirect(request.getContextPath()/category-list.jsp);}else {//登录失败提示response.setContentType(text/html;charsetutf-8);response.getWriter().write(用户登录失败);}}protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {}
}2新建login.jsp
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %
% page contentTypetext/html;charsetUTF-8 languagejava %
html langen
headmeta charsetUTF-8/titleDocument/titlescript typetext/javascript srcstatic/js/jquery-1.9.0.min.js/scriptscript typetext/javascript srcstatic/js/login.js/scriptlink hrefstatic/css/login2.css relstylesheet typetext/css/
/head
body
h1生鲜管理系统supV2017/sup
/h1div classlogin stylemargin-top: 50px;div classheaderdiv classswitch idswitcha classswitch_btn_focus idswitch_qloginhrefjavascript:void(0); tabindex7快速登录/a aclassswitch_btn idswitch_login hrefjavascript:void(0);tabindex8快速注册/adiv classswitch_bottom idswitch_bottomstyleposition: absolute; width: 64px; left: 0px;/div/div/divdiv classweb_qr_login idweb_qr_loginstyledisplay: block; height: 235px;!--登录--div classweb_login idweb_logindiv classlogin-boxdiv classlogin_formform actionloginaccept-charsetutf-8 idlogin_form classloginFormmethodpostinput typehidden namemethod valuelogin/input typehidden namedid value0/ input typehiddennameto valuelog/div classuinArea iduinArealabel classinput-tips foru帐号/labeldiv classinputOuter iduAreainput typetext idu namename value${cookie.name.value} classinputstyle//div/divdiv classpwdArea idpwdArealabel classinput-tips forp密码/labeldiv classinputOuter idpAreainput typepassword idp namepassword value${cookie.password.value} classinputstyle//div/divdiv stylemargin-left: 45px;margin-top: 10pxinput stylevertical-align: middle; typecheckbox valueyes nameremember记住密码br//divdiv stylepadding-left: 50px; margin-top: 20px;input typesubmit value登 录 stylewidth: 150px;classbutton_blue//div/form/div/div/div!--登录end--/div!--注册--div classqlogin idqlogin styledisplay: none;div classweb_loginform nameform2 idregUser accept-charsetutf-8actionregister methodpostinput typehidden nameto valuereg/ input typehiddennamedid value0/ul classreg_form idreg-uldiv iduserCue classcue快速注册请注意格式/divlilabel foruser classinput-tips2用户名/labeldiv classinputOuter2input typetext iduser namename maxlength16classinputstyle2//div/lililabel forpasswd classinput-tips2密码/labeldiv classinputOuter2input typepassword idpasswd namepassword maxlength16classinputstyle2//div/lililabel forpasswd2 classinput-tips2确认密码/labeldiv classinputOuter2input typepassword idpasswd2 namepassword2 maxlength16classinputstyle2//div/lililabel foremail classinput-tips2邮箱/labeldiv classinputOuter2input typeemail idemail nameemail classinputstyle2//div/lilidiv classinputAreainput typesubmit idregstylemargin-top: 10px; margin-left: 85px;classbutton_blue value同意协议并注册/ a href# classzcxytarget_blank.注册协议/a/div/lidiv classcl/div/ul/form/div/div!--注册end--
/div
/body
/body
/html3.3. 效果 JavaWeb开发 实战-生鲜后台管理系统 注册、登录、记住密码示例下载