项目中的一些学习

1.

int 不能为空 integer 可以为空    数据库可能为空的时候用

2.

组合查询  拼sql语句

3.

模糊匹配查询
 前 后 加%
real_name like ?;
例如like %张%

4.

dao
客户端验证


5.

TimeStamp数据库字段类型。时间的时分秒都有

java也可以用TimeStamp


例如:
private TimeStamp  time ; //有时分秒

java.sql.Date()只有年月日


6

#session.costs

7.

标签和el表达式先解析,然后生成html,js才去执行

8.加个''避免空串

 

9.

用list的同一个字段组成下拉列表
 action中:
  public String toPage() throws Exception{
   List<Cost> costs = costDao.findAll();
   session.put("costs", costs);
   return "success";
  }
 html中:
  <s:select list="#session.costs" name="service.costId"
   listKey="id" listValue="feeName">
  </s:select>
注:service.costId是Cost的id

10.保存完后返回原页面显示提示信息
 action中:
  public String xxx() throws Exception {
   String saveMsg = "";
   try {
    sdao.save(serviceBak);
    saveMsg = "true";
   } catch (Exception e) {
    saveMsg = "false";
   }
   this.request.put("saveMsg", saveMsg);
 
   return "success";
  }
 html中:
     <body οnlοad="showsaveMsg();">
     
   javascript中:
           function showsaveMsg(){
             var v='${saveMsg}';
             if(v=="true"){
              $("#save_result_info").attr("class","save_success");
              $("#save_result_info").text("保存成功");
               showResult();
             }else if(v=="false"){
              $("#save_result_info").attr("class","save_fail");
              $("#save_result_info").text("保存失败");
               showResult();
             }
             //如果为空没有操作没有响应
            }  

11.获得产生的id


public class UserDAO {
 public int save(User user) throws Exception{
  int id = -1;
  Connection conn =
   DBUtil.getConnection();
  PreparedStatement prep =
   conn.prepareStatement(
     "insert into f_user" +
     "(username,name,pwd,age,gender,phone,ask) " +
     "values(?,?,?,?,?,?,?)",
     java.sql.Statement.RETURN_GENERATED_KEYS);
  prep.setString(1, user.getUsername());
  prep.setString(2, user.getName());
  prep.setString(3, user.getPwd());
  prep.setInt(4, user.getAge());
  prep.setString(5, user.getGender());
  prep.setString(6, user.getPhone());
  prep.setString(7, user.getAsk());
  prep.executeUpdate();
  ResultSet rst = prep.getGeneratedKeys();
  if(rst.next()){
   //rst.getInt("id"); error!
   id = rst.getInt(1);
  }
  DBUtil.close(conn);
  return id;
 }

12.权限管理

难点:解析xml

13. 获取插入数据库的的列的值
//返回id
//conn.prepareStatement(sql,new String[]{"ID"});
   


=========================================================
老师的笔记
==================  
1.项目需求
  该系统为电信计费项目,用户为营业厅的营业员,部门经理等内部人员。不同用户可以有不同操作权限。
  项目背景:电信公司有一批Unix服务器,对客户提供使用,该系统主要用于对这些服务收费和查询等。
2.一期开发功能如下
  课堂案例:资费管理模块
    该模块用于对收费标准进行管理,例如包月,套餐,计时等收费标准。
  1)账务账号
    当用户需要使用Unix服务时,首先需要开通一个账务账号,该账号与身份证对应。该模块用于对账务账号信息进行维护和管理。
  2)业务账号
    一个账务账号可以对应多个业务账号。不同业务账号对应不同服务。该模块对业务账号信息进行维护和管理。
  3)角色管理
    用于对角色信息进行维护和管理。可以指定某个角色可以做哪些操作。
  4)管理员管理
    用于对管理员用户信息进行维护和管理。
可以指定一个管理员可以拥有哪些角色。

3.开发技术架构
  采用Struts2+JDBC+Ajax+jQuery等技术开发。项目整体基于MVC结构,主要分成以下部分:
    控制层:采用Struts2控制器
    视图层:采用JSP实现(ajax,jQuery)
    模型层:采用DAO,实体对象(jdbc)
=======项目开发==========
4.项目开发步骤(账号检索)
  1)通过TTS6查看功能的需求说明,搞清楚需求和要做的功能
  2)看看HTML页面和数据表设计,搞清楚该功能与哪些数据表相关
  3)设计一个请求到响应的处理流程
accountSearch.action(提交查询条件)
-->AccountSearchAction
-->AccountDAO(根据条件查询Account表)
-->account_list.jsp(将账号信息循环显示)
  4)编写AccountDAO
    --是否有Account实体类,没有添加
    --定义AccountDAO接口方法
    --编写AccountDAO实现类
  5)编写AccountSearchAction
    --定义输入和输出属性
    --定义execute业务方法
  6)配置Action,将请求和Action对应
  7)编写account_list.jsp
    添加标签和表达式,循环集合数据
  8)测试界面功能

=========追加分页==========
1)修改AccountDAO的方法参数,追加page,pageSize
2)将sql语句改造成分页查询的sql
select * from (
select t1.*,rownum num from (
组合查询的SQL语句
) t1 where rownum < ?
)where num >= ?
3)为Action添加page属性,用于控制分页
4)修改account_list.jsp,添加分页按钮的处理.
   当用户点击分页按钮时,触发一个goPageAction(要显示的page值)函数,
该函数利用js提交查询条件的Form表单和要显示的page值。
========================
 5.业务账号查询
   2)判断页面功能与哪些数据表相关
*OS 账号--Service
*服务器 IP
身份证--Account
*状态
*业务ID
*账务账号ID
姓名--Account
资费名--Cost

  3)设计请求处理流程
serviceSearch.action
-->ServiceSearchAction
-->ServiceDAO(service,account,cost表)
-->service_list.jsp
  4)编写ServiceDAO
    --添加Service实例类
    --定义ServiceDAO接口方法
    --编写ServiceDAO实现类
   
=======添加操作表单========
身份证
账务账号名
---》*账务账号ID(表单追加一个hidden,采用ajax技术根据身份证或账务账号名生成账号ID,将来提交到表单)
*资费类型ID
*服务器 IP
*登录 OS 账号
*密码
重复密码(不用提交)
  
toAddService.action
-->AddServiceAction(提取资费信息)
-->CostDAO
-->service_add.jsp(利用标签动态生成资费选择列表)
addService.action
-->AddServiceAction(接收表单信息执行添加处理)
-->ServiceDAO
-->service_add.jsp(提示成功或失败)
=====业务更新操作========
该页面允许修改业务账号的资费类型,其它字段不允许修改。当用户修改后,将信息写入
SERVICE_UPDATE_BAK备份表。
将来我们通过一个PL/SQL程序将备份表记录取出,更新到SERVICE表。
--SERVICE_UPDATE_BAK表结构----
ID
SERVICE_ID
COST_ID
CREATE_DATE

==========权限模块===========
1.本系统权限部分相关概念
  a.管理员--(公司员工)
    指的是系统的使用者。不同管理员可以有不同的角色,一个管理员可以有多个角色
  b.角色--(不同职位)
    指的是一系列操作的集合。一个角色可以有一个或多个权限
    数据涉及role和role_privilege表。
 role用于存储角色基本信息.
 role_privilege用于存储角色和权限关系信息
  c.权限--(不同职位需要做的具体工作)
    指的是具体一个或多个操作(请求)。
    该数据采用了privileges.xml存储
2.本次任务完成以下功能
  *1)角色管理功能
    用于对角色信息进行增删改查。用于维护管理角色相关数据。
    a.添加操作
      --需要首先向role表insert
      --然后向role_privilege表insert
    b.更新操作
      --首先更新role表update
      --更新role_privilege表数据
         先执行delete操作 by role_id
         然后执行insert操作添加角色和权限
         对应数据
     c.角色删除操作
       --首先删除role_privilege数据
       --然后删除role数据


     d.进入添加页面
/role/toAddRole.action
-->AddRoleAction(解析privileges.xml数据)
-->role_add.jsp(将解析的数据以checkbox展现)

  *2)管理员功能
    用于对管理员信息进行增删改查。用于维护管理员相关数据。
 管理员模块涉及Admin_info和Admin_Role数据表。
Admin_info用于存储管理员基本信息。
Admin_Role用于存储管理员和角色对应关系
    a.管理员添加
      --首先向Admin_info表insert
      --然后向Admin_Role表插入关系数据
       (指定几个角色就插入几个记录)
      ==进入添加页面===
toAddAdmin.action
-->AddAdminAction(查询所有角色信息)
-->RoleDAO
-->admin_add.jsp(根据角色集合生成checkbox)
     ==添加管理员====
addAdmin.action
-->AddAdminAction(保存管理员信息)
-->AdminDAO(完成admin_info,admin_role记录添加)
-->admin_add.jsp(提示成功或失败)

    b.管理员删除
      --首先删除Admin_Role表的关系数据
        (可以利用Admin_id当删除条件)
      --然后删除Admin_info表的数据
    c.管理员更新
       --首先更新Admin_info表数据
       --然后更新Admin_Role表的关系数据
       (先清除原关系数据,然后从新insert          关系记录)
    d.管理员查询
*管理员ID  
*姓名  
*登录名  
*电话  
*电子邮件  
*授权日期  *-->Admin_Info
拥有角色-->Admin_Role-->Role
select a.*,r.name
from Admin_info a,Admin_Role ar,Role r
where a.id=ar.admin_id
  and ar.role_id=r.id

  3)权限检查部分(以后完成)

 

 

 


----------------------

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值