zoukankan      html  css  js  c++  java
  • 开发体会(模块2 管理员管理)

            这次学习有了新的体会,除了之前对mvc模式的简单了解之外,第一个感受就是Servlet中Service方法的运用。

            为什么这么说呢,放在之前我写servlet是这样写的,总是一个请求写一个servlet,最后写完一个网页代码是非常

    冗余的。但是这次开发我惊奇的发现,还有这么好的方法---service,就像c++里的main()函数,c++里的程序都是从

    main()函数开始的。其实service方法一直都是存在的,没有service就不能称为servlet了。当我们重写service方法之后,

    servlet容器就会把请求交给service方法来进行处理。

           比如这次的管理员管理模块,前台选择增删改查之后会跳转到AdminServlet而且会带method参数,service方法获取method

    值进行判断,然后调用相应的方法。如果需要用到doXXX,在service方法中加一句super.service(),就可以了。

        添加管理员和修改管理员信息放到同一个jsp页面和同一个servlet方法里了,这样有效的减少了代码的冗余。但是这是怎么实现的呢?

    <a href="adminServlet?method=toUpdate&id=${item.id}">修改</a> 当我们选择修改的时候,进入AdminServlet经过service方法判断

    调用toUpdate方法,在toUpdate()方法里获取id的值进行判断,因为超级管理员的id=1不能进行修改,所以resp.sendRedirect(req.getContextPath()+

    "/admin/AdminServlet?method=list&status=3");重定向到AdminServlet再次通过service判断method调用listUser方法,listUser方法获取status参数的值,

    if (status != null) {
    req.getRequestDispatcher("/admin/listUsers.jsp?status=" + status).forward(req, resp);

    }

    判断不为空就带着status转发到页面,因为status=3,所以提示没有权限操作超级管理员。如果id>1

    AdminDao adminDao = new AdminDao();
    AdminBean adminBean = adminDao.getById(id);

    req.setAttribute(Constants.SESSION_UPDATE_BEAN, adminBean);

    req.getRequestDispatcher("/admin/addUser.jsp").forward(req, resp);

    通过id获取adminBean ,并且放到request中,然后转发到addUser.jsp

    <form role="form" class="form-horizontal" action="${pageContext.request.contextPath}/admin/AdminServlet?method=addUser&updateId=${updateBean.id }"
    method="post" id="checkForm">

    进行修改之后,跳到AdminServlet,并且带着method和管理员的id即updateBean.id,addUser获取id的值和用户名密码之后,判断id是否为空

    如果为空就是添加,这时需要判断用户名是否存在,用户名不存在就可以注册,写入数据库并返回status提示注册成功,否则返回status提示该用户已存在;

    如果id不为空就是修改,这时也需要判断该用户是否存在,如果不存在返回status提示修改失败,如果存在写入数据库返回status修改成功。

  • 相关阅读:
    core 3.7.1 报错 SDK.InvalidRegionId : Can not find endpoint to access.
    定时30分钟清除缓存,重置
    文件的分割与合并
    mybatis <collection property="GoodsList" column="orderId" javaType="java.util.List" ofType="ui.model.vo.GoodsList" select="selectOrderDetail" fetchType="eager"/>
    hashMap 源码注释分析(二)
    hashMap 源码注释分析(一)
    ElasticSearch 入门
    Java 三高 ,高并发 ,高可用 。高性能
    使用MyBatis返回map对象,字段值为null时不返回或返回null,目标返回自定义的默认值...
    idea html 中文乱码,控制台中文乱码,工程文件中文乱码
  • 原文地址:https://www.cnblogs.com/jingxiaopu/p/7078451.html
Copyright © 2011-2022 走看看