当前位置: 首页 > wzjs >正文

基于wordpress的用户管理实现原理石家庄seo顾问

基于wordpress的用户管理实现原理,石家庄seo顾问,如何设计公司官网站,三里屯做网站的公司文章目录 登出、注册、注销、修改登出操作的实现逻辑及方式防止用户登出后可以继续访问修改密码功能实现导入jsp实现Dao层数据接口实现Service层业务接口注册Servlet 注册和注销 用户的方式导入jsp实现Dao层的数据逻辑实现Service逻辑注册Servlet 登出、注册、注销、修改 登出…

文章目录

  • 登出、注册、注销、修改
    • 登出操作的实现逻辑及方式
    • 防止用户登出后可以继续访问
    • 修改密码功能实现
      • 导入jsp
      • 实现Dao层数据接口
      • 实现Service层业务接口
      • 注册Servlet
    • 注册和注销 用户的方式
      • 导入jsp
      • 实现Dao层的数据逻辑
      • 实现Service逻辑
      • 注册Servlet

登出、注册、注销、修改

登出属于断开登录,操作session就可以解决

应用更改数据库的处理模式,add,delete,modify都是属于事务处理操作

登出操作的实现逻辑及方式

清楚session就可以,不再保存登录记录

package com.dashangms.servlet.user;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class LogoutServlet extends HttpServlet {@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 移除session 中的用户信息request.getSession().removeAttribute("user");// 跳转到登录页面response.sendRedirect(request.getContextPath() + "/jsp/login.jsp");}Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}
}
    <!--注册Logout servlet--><servlet><servlet-name>logout</servlet-name><servlet-class>com.dashangms.servlet.user.LogoutServlet</servlet-class></servlet><!--Logout servlet请求路径--><servlet-mapping><servlet-name>logout</servlet-name><url-pattern>/logout</url-pattern></servlet-mapping>

防止用户登出后可以继续访问

  1. 思路:页面登出时先走login拦截器,如果session清空就说明已退出
package com.dashangms.filter;import com.common.Constants;import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class LoginFilter extends HttpFilter {/*** 执行过滤操作** @param request  Servlet请求,用于获取HTTP请求信息* @param response Servlet响应,用于向客户端发送数据* @param chain    过滤链,用于将请求传递给下一个过滤器或目标资源* @throws IOException 如果在执行过程中发生I/O错误* @throws ServletException 如果在执行过程中发生Servlet错误*/@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{// 将ServletRequest和ServletResponse转换为HttpServletRequest和HttpServletResponse// 以使用它们提供的高级功能和方法HttpServletRequest httpServletRequest = (HttpServletRequest) request;HttpServletResponse httpServletResponse = (HttpServletResponse) response;// 检查用户会话中是否存在用户信息// 如果不存在,说明用户未登录或会话已过期if (httpServletRequest.getSession().getAttribute(Constants.USER_SESSION) == null) {// 重定向用户到错误页面// 这里假设错误页面为"/error.jsp",实际路径应根据项目具体结构设置httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/error.jsp");} else {// 如果用户会话中存在用户信息,继续执行过滤链// 这允许请求继续传递到目标资源或下一个过滤器chain.doFilter(request, response);}}@Overridepublic void init() throws ServletException {super.init();}@Overridepublic void destroy() {super.destroy();}
}
  1. 登出后访问任意页面走过滤器处理
<!--    判断用户是否登录的过滤器--><filter><filter-name>LoginFilter</filter-name><filter-class>com.csnz.filter.LoginFilter</filter-class></filter><filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>/jsp/*</url-pattern></filter-mapping>

修改密码功能实现

导入jsp

<li><a href=${pageContext.request.contextPath}"/jsp/pwdmodify.jsp">密码修改</a></li>

实现Dao层数据接口

  1. 在Dao写一个接口
int updatePwd(Connection connection, Integer id, String newPwd) throws Exception;
  1. 实现这个接口
    /*** 更新用户密码** @param connection 数据库连接对象* @param id         用户id* @param newPwd     新密码* @return 影响行数* @throws Exception 异常处理*/@Overridepublic int updatePwd(Connection connection, Integer id, String newPwd) throws Exception {// 初始化影响行数为0int updateRow = 0;// 检查数据库连接是否为空if (connection != null){// 预编译SQL语句以提高性能和安全性PreparedStatement preparedStatement = null;String sql = "update smbms_user set userPassword = ? where id = ?";preparedStatement = connection.prepareStatement(sql);// 设置SQL语句参数preparedStatement.setString(1, newPwd);preparedStatement.setInt(2, id);// 执行更新操作并获取影响行数updateRow = preparedStatement.executeUpdate();// 关闭数据库连接和预编译语句资源BaseDao.closeResource(connection, preparedStatement, null);}// 返回影响行数return updateRow;}

实现Service层业务接口

  1. 在Service上写一个接口
    /*** 修改密码* @param id 用户id* @param newPwd 新密码* @return 修改成功 flag*/public boolean updatePwd(Integer id, String newPwd);
  1. 实现这个Service
    /*** 修改密码** @param id     用户id* @param newPwd 新密码* @return 修改成功 flag*/@Overridepublic boolean updatePwd(Integer id, String newPwd) {Connection conn = null;boolean flag = false;try {conn = BaseDao.connection();if (userDao.updatePwd(conn, id, newPwd) > 0){flag = true;}} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeConnection(conn);}return flag;}

注册Servlet

  1. 多个按钮会在同一个Servlet的中调用不同的方法;
  2. 相关密码的check逻辑:
  • 密码不能为空
  • 密码与旧密码不能相同
  • 密码输入要合法化
  1. 密码修改成功与否都会返回原页面。有msg显示。
package com.dashangms.servlet.user;import com.dashangms.pojo.User;
import com.dashangms.service.user.UserService;
import com.dashangms.service.user.UserServiceImpl;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class UserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method = req.getParameter("method");if ("savePassword".equals(method)) {savePassword(req, resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);}/*** 保存用户新密码** @param req  HTTP请求对象,用于获取请求参数和进行页面转发* @param resp HTTP响应对象,用于进行页面转发* @throws ServletException 如果Servlet操作出错* @throws IOException      如果输入输出操作出错*/private void savePassword(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取用户ID和新密码String id = req.getParameter("id");String newPwd = req.getParameter("newPwd");Object object = req.getSession().getAttribute("user");User user = (User) object;// 创建UserService对象UserService userService = new UserServiceImpl();if (user.getUserPassword().isEmpty()) {req.getSession().setAttribute("message", "密码不能为空!");} else if (user.getUserPassword().equals(newPwd)) {req.getSession().setAttribute("message", "新密码不能与旧密码相同!");} else {// 调用UserService的updatePwd方法更新用户密码if (userService.updatePwd(Integer.parseInt(id), newPwd)) {req.getSession().setAttribute("message", "密码修改成功!请使用新密码重新登陆");// 移除用户会话中的用户信息,表示用户已经注销req.getSession().removeAttribute("user");} else {// 如果密码更新失败,转发到错误页面req.getSession().setAttribute("message", "密码更新失败!");}}// 如果密码更新成功,转发到密码修改页面req.getRequestDispatcher("/pwdmodify.jsp").forward(req, resp);}
}
  1. 注册Servlet
    <servlet><servlet-name>UserServlet</servlet-name><servlet-class>com.dashangms.servlet.user.UserServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserServlet</servlet-name><url-pattern>/jsp/user.do</url-pattern></servlet-mapping>

注册和注销 用户的方式

同上 改善点

导入jsp

可以共同使用同一个页面,根据前面页面传的值使用hidden确定显示哪部分内容;

实现Dao层的数据逻辑

  • 插入新用户 insert
  • 注销(删除)新用户 update (逻辑删除)

实现Service逻辑

  • 插入新用户 insert
    • 使用前先判断是否有同样的账号,判断一致性插入
  • 注销(删除)新用户 update (逻辑删除)
    • 停用功能,:停用和启用相对应,不会删除数据
    • 删除功能
      • 物理删除?
      • 逻辑删除?

注册Servlet

同样在UserServlet中调用其他的逻辑,主要点 在jsp中确定实现

不需要再新注册Servlet来实现

http://www.dtcms.com/wzjs/559155.html

相关文章:

  • 广州优化网站排名保定建设网站公司
  • 中国网站建设服务中心wordpress插件+手机版
  • 订餐网站建设网站空间商拿不回数据
  • 企业网站源码库健康南充app
  • wordpress手机网站模板如何做招聘网站效果评估
  • 四川seo整站优化吧哈尔滨市建设工程交易网
  • 平面设计做画册用网站网站建设综合实训案例
  • 成功做网站域名网站怎么做的
  • 研究院网站建设的内容深圳返利网站开发
  • 福建省建设注册执业资格管理中心网站做网站公司凡科
  • 西安志成网站建设公司苏州市建设厅网站首页
  • 做书照片网站牙膏的网站建设
  • 高端企业网站模板软件开发工程师证书含金量高吗
  • 网站建设外出考察信息建设部网站技术负责人业绩表
  • 人力网站建设的建议上海市新闻发布会
  • 做点心的网站外贸做什么产品出口好
  • 汝州市住房和城乡建设局网站永久链接生成器
  • 百度地图 企业网站郑州网站建设的软件
  • 网站备案要幕布做网站网站是什么案件
  • 网站后台管理系统如何安装婚纱销售网站
  • 淮阳城乡建设局网站网站免费推广大全
  • 校园网站建设的意见与建议wordpress模板层级
  • 漳州市建设局网站做的门户网站怎么绑定ip地址
  • 设计网站的公司wordpress 建论坛
  • 生鲜网站建设php旅游类网站开发
  • 吉安建设工程项目网站谁做的怀来吧网站
  • 模板网站怎么做卖大学生网站制作作业免费下载
  • 哪个网站可以悬赏做图有没有医学生做课件的网站
  • 湛江专业建网站哪家好买链接做网站 利润高吗
  • asp网站后台安全退出网站开发如何避开法律