版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SCM项目手把手开发文档作者:刘长炯日期:2008-9-16版本:1.0 TOC o 1-5 h z u HYPERLINK l _Toc209658883 1SCM项目手把手开发文档 PAGEREF _Toc209658883 h 1 HYPERLINK l _Toc209658884 1编写目的 PAGEREF _Toc209658884 h 3 HYPERLINK l _Toc209658885 2搭建差不多开发环境 PAGEREF _Toc209658885 h 3 HYPERLINK l _Toc209658886 2.1安装JDK和MyEclipse 5.5/6.0/6.5 PAG
2、EREF _Toc209658886 h 3 HYPERLINK l _Toc209658887 2.2下载和安装Tomcat PAGEREF _Toc209658887 h 3 HYPERLINK l _Toc209658888 2.3安装MySQL 5.0/6.0 数据库 PAGEREF _Toc209658888 h 4 HYPERLINK l _Toc209658889 2.4安装MySQL客户端治理软件Navicat Lite(可选) PAGEREF _Toc209658889 h 4 HYPERLINK l _Toc209658890 2.5安装和配置邮件服务器 (可选) PAGE
3、REF _Toc209658890 h 5 HYPERLINK l _Toc209658891 2.6创建数据库和表 PAGEREF _Toc209658891 h 6 HYPERLINK l _Toc209658892 2.6.1创建数据库 PAGEREF _Toc209658892 h 6 HYPERLINK l _Toc209658893 2.6.2创建数据库表 PAGEREF _Toc209658893 h 6 HYPERLINK l _Toc209658894 2.7预备必要的类库文件 PAGEREF _Toc209658894 h 6 HYPERLINK l _Toc2096588
4、95 3开发项目 PAGEREF _Toc209658895 h 7 HYPERLINK l _Toc209658896 3.1创建myscm2 Web项目 PAGEREF _Toc209658896 h 7 HYPERLINK l _Toc209658897 3.2加入必要的JAR类库 PAGEREF _Toc209658897 h 8 HYPERLINK l _Toc209658898 3.3导入JSP页面文件 PAGEREF _Toc209658898 h 9 HYPERLINK l _Toc209658899 3.4修改web.xml加入Struts 2过滤器 PAGEREF _Toc
5、209658899 h 9 HYPERLINK l _Toc209658900 3.5设置Hibernate全局配置文件 PAGEREF _Toc209658900 h 10 HYPERLINK l _Toc209658901 3.6创建项目包结构 PAGEREF _Toc209658901 h 11 HYPERLINK l _Toc209658902 3.7开发通用工具类 PAGEREF _Toc209658902 h 12 HYPERLINK l _Toc209658903 3.7.1util.MD5Bean PAGEREF _Toc209658903 h 12 HYPERLINK l _
6、Toc209658904 3.7.2util.mail.MailSender PAGEREF _Toc209658904 h 12 HYPERLINK l _Toc209658905 3.7.3filters.TomcatFormFilter PAGEREF _Toc209658905 h 13 HYPERLINK l _Toc209658906 3.8开发实体类和HBM文件 PAGEREF _Toc209658906 h 13 HYPERLINK l _Toc209658907 3.9开发DAO层 PAGEREF _Toc209658907 h 15 HYPERLINK l _Toc2096
7、58908 3.9.1HibernateSessionFactory PAGEREF _Toc209658908 h 15 HYPERLINK l _Toc209658909 3.9.2BaseDAO PAGEREF _Toc209658909 h 16 HYPERLINK l _Toc209658910 3.9.3OpenSessionInViewFilter PAGEREF _Toc209658910 h 16 HYPERLINK l _Toc209658911 3.10开发用户模块 PAGEREF _Toc209658911 h 17 HYPERLINK l _Toc209658912
8、3.10.1BaseActionSupport(可选) PAGEREF _Toc209658912 h 17 HYPERLINK l _Toc209658913 3.10.2UserAction类摘要设计 PAGEREF _Toc209658913 h 19 HYPERLINK l _Toc209658914 3.10.3Struts 2通配符方式配置 PAGEREF _Toc209658914 h 20 HYPERLINK l _Toc209658915 3.10.4用户列表功能 PAGEREF _Toc209658915 h 20 HYPERLINK l _Toc209658916 3.1
9、0.5删除 PAGEREF _Toc209658916 h 21 HYPERLINK l _Toc209658917 3.10.6表单AJAX验证功能 PAGEREF _Toc209658917 h 21 HYPERLINK l _Toc209658918 3.10.7注册 PAGEREF _Toc209658918 h 21 HYPERLINK l _Toc209658919 3.10.8激活 PAGEREF _Toc209658919 h 23 HYPERLINK l _Toc209658920 3.10.9用户登录 PAGEREF _Toc209658920 h 23 HYPERLINK
10、 l _Toc209658921 3.10.10用户注销 PAGEREF _Toc209658921 h 23 HYPERLINK l _Toc209658922 3.10.11修改用户自己资料 PAGEREF _Toc209658922 h 24 HYPERLINK l _Toc209658923 3.10.12取回密码 PAGEREF _Toc209658923 h 24 HYPERLINK l _Toc209658924 3.10.13修改个人密码 PAGEREF _Toc209658924 h 25 HYPERLINK l _Toc209658925 3.10.14依照ID查看用户信息
11、 PAGEREF _Toc209658925 h 25 HYPERLINK l _Toc209658926 3.11开发安全过滤器模块 PAGEREF _Toc209658926 h 25 HYPERLINK l _Toc209658927 3.12开发后台治理模块(此模块建议作为练习) PAGEREF _Toc209658927 h 26 HYPERLINK l _Toc209658928 3.12.1前台设计 PAGEREF _Toc209658928 h 26 HYPERLINK l _Toc209658929 3.12.2用户治理概要设计 PAGEREF _Toc209658929 h
12、 27 HYPERLINK l _Toc209658930 用户搜索 PAGEREF _Toc209658930 h 27 HYPERLINK l _Toc209658931 添加新用户 PAGEREF _Toc209658931 h 28 HYPERLINK l _Toc209658932 扫瞄所有用户 PAGEREF _Toc209658932 h 28 HYPERLINK l _Toc209658933 删除用户 PAGEREF _Toc209658933 h 28 HYPERLINK l _Toc209658934 3.13站点全局配置及加载 PAGEREF _Toc209658934
13、 h 28 HYPERLINK l _Toc209658935 加载 PAGEREF _Toc209658935 h 28 HYPERLINK l _Toc209658936 修改 PAGEREF _Toc209658936 h 28 HYPERLINK l _Toc209658937 3.14安全中心 PAGEREF _Toc209658937 h 30 HYPERLINK l _Toc209658938 3.14.1页面设计 PAGEREF _Toc209658938 h 30 HYPERLINK l _Toc209658939 3.14.2添加新角色 PAGEREF _Toc209658
14、939 h 30 HYPERLINK l _Toc209658940 3.14.3扫瞄所有角色 PAGEREF _Toc209658940 h 30 HYPERLINK l _Toc209658941 3.14.4添加资源访问许可 PAGEREF _Toc209658941 h 30 HYPERLINK l _Toc209658942 3.14.5扫瞄所有资源访问许可 PAGEREF _Toc209658942 h 30 HYPERLINK l _Toc209658943 4供应商和商品模块 PAGEREF _Toc209658943 h 30 HYPERLINK l _Toc20965894
15、4 4.1商店首页面 PAGEREF _Toc209658944 h 30 HYPERLINK l _Toc209658945 4.2供应商模块 PAGEREF _Toc209658945 h 32 HYPERLINK l _Toc209658946 4.2.1类设计 PAGEREF _Toc209658946 h 32 HYPERLINK l _Toc209658947 4.2.2注册供应商用户 PAGEREF _Toc209658947 h 32 HYPERLINK l _Toc209658948 4.2.3添加供应商(TODO 供应商审批,隶属于交易员模块) PAGEREF _Toc20
16、9658948 h 32 HYPERLINK l _Toc209658949 4.2.4查看我的供应商列表 PAGEREF _Toc209658949 h 32 HYPERLINK l _Toc209658950 4.2.5查看所有供应商列表 PAGEREF _Toc209658950 h 33 HYPERLINK l _Toc209658951 4.2.6查看分成总额 PAGEREF _Toc209658951 h 33 HYPERLINK l _Toc209658952 4.3商品模块 PAGEREF _Toc209658952 h 33 HYPERLINK l _Toc209658953
17、 4.3.1类设计 PAGEREF _Toc209658953 h 33 HYPERLINK l _Toc209658954 4.3.2页面设计 PAGEREF _Toc209658954 h 34 HYPERLINK l _Toc209658955 4.3.3添加商品 PAGEREF _Toc209658955 h 35 HYPERLINK l _Toc209658956 4.3.4扫瞄商品信息 PAGEREF _Toc209658956 h 35 HYPERLINK l _Toc209658957 4.3.5扫瞄我的商品列表 PAGEREF _Toc209658957 h 35 HYPER
18、LINK l _Toc209658958 4.3.6扫瞄商品列表 PAGEREF _Toc209658958 h 35 HYPERLINK l _Toc209658959 4.3.7修改商品信息 PAGEREF _Toc209658959 h 35 HYPERLINK l _Toc209658960 4.3.8商品搜索 PAGEREF _Toc209658960 h 35 HYPERLINK l _Toc209658961 5购物车模块 PAGEREF _Toc209658961 h 35 HYPERLINK l _Toc209658962 5.1页面设计 PAGEREF _Toc209658
19、962 h 35 HYPERLINK l _Toc209658963 6程序开发调试交流 PAGEREF _Toc209658963 h 36 HYPERLINK l _Toc209658964 6.1No result defined for action XXX and result success(input)的真正错误缘故 PAGEREF _Toc209658964 h 36 HYPERLINK l _Toc209658965 6.2排除法 PAGEREF _Toc209658965 h 37 HYPERLINK l _Toc209658966 6.2.1排除扫瞄器及扫瞄器版本的因素
20、PAGEREF _Toc209658966 h 37 HYPERLINK l _Toc209658967 6.2.2排除多余属性的干扰 PAGEREF _Toc209658967 h 37 HYPERLINK l _Toc209658968 6.2.3JDK运行版本和开发工具编译器版本是否匹配? PAGEREF _Toc209658968 h 38 HYPERLINK l _Toc209658969 6.2.4重新公布Web应用或者复制新的JAR/Class文件了嘛? PAGEREF _Toc209658969 h 39 HYPERLINK l _Toc209658970 6.2.5Hiber
21、nate的包加完整了嘛? PAGEREF _Toc209658970 h 39 HYPERLINK l _Toc209658971 6.2.6不的类似项目是否能正常运行? PAGEREF _Toc209658971 h 40 HYPERLINK l _Toc209658972 6.2.7perties是我们的好朋友 PAGEREF _Toc209658972 h 40 HYPERLINK l _Toc209658973 6.2.8人不如新,衣不如旧 PAGEREF _Toc209658973 h 41 HYPERLINK l _Toc209658974 6.2.9把能正确运行的项目的jar包集
22、中起来,分门不类放置 PAGEREF _Toc209658974 h 41 HYPERLINK l _Toc209658975 6.3关联程序源码 PAGEREF _Toc209658975 h 42 HYPERLINK l _Toc209658976 6.4JDK6和Struts 2冲突的问题真实缘故及解决方法 PAGEREF _Toc209658976 h 42 HYPERLINK l _Toc209658977 6.5使用UTF-8或者GBK编码的MySQL实例 PAGEREF _Toc209658977 h 48 HYPERLINK l _Toc209658978 6.6另外一个Hib
23、ernateSessionFactory事务的异常 PAGEREF _Toc209658978 h 50 HYPERLINK l _Toc209658979 6.7MySQL安装版停止运行 PAGEREF _Toc209658979 h 50 HYPERLINK l _Toc209658980 6.8MyEclipse可不能自动删除项目里面差不多去掉的JAR PAGEREF _Toc209658980 h 50 HYPERLINK l _Toc209658981 6.9MySQL导出完整的建表语句 PAGEREF _Toc209658981 h 51 HYPERLINK l _Toc20965
24、8982 6.10Struts 2不要加所有的JAR文件,否则项目会报错 PAGEREF _Toc209658982 h 51编写目的本文档列出了本项目的差不多开发步骤(只包含用户模块和后台治理模块),用于复习和开发时参考。开发时遵循的原则为尽量简单并提高代码复用,减少重复的代码。搭建差不多开发环境安装JDK和MyEclipse 5.5/6.0/6.5本项目需要JDK 1.5(不要使用JDK 1.6,因为发觉可能会导致BUG发生而无法载入Struts 2配置文件)。本项目使用MyEclipse 5.5或者更高版本开发,用其他工具例如Eclipse Java EE版本也可,要紧用到JSP编辑器及
25、Web项目公布功能。下载和安装Tomcat安装好Tomcat 6.0(或者5.5及更高版本)注意: 由于 Struts 2和 Tomcat 5.0 有冲突, 因此不能用Tomcat 5.Tomcat是一款开源免费的JSP服务器,能够在 HYPERLINK / / 下载并安装。建议下载压缩包版本(文件名是apache-tomcat-6.x.xx.zip),而不是Windows Service Installer的EXE安装文件。 解压缩到磁盘目录,记下安装路径例如c:apache-tomcat-6.0.14, 和JDK的安装一样,为了幸免日后产生问题错误,解压缩的路径不要带有空格,如c:Prog
26、ram Files。安装MySQL 5.0/6.0 数据库能够访问 MySQL 官方网站下载原版安装程序和JDBC驱动,请访问: HYPERLINK /downloads/mysql/5.0.html#win32 /downloads/mysql/6.0.html#win32,下载安装包(如文件mysql-essential-6.0.5-alpha-win32.msi)双击进行安装,在最后一个屏幕点击启动Configure the MySQL Server now启动实例配置工具即可,如下图所示。配置过程请参考视频HYPERLINK N:整理后mysql_server_config.exemy
27、sql_server_config.exe。此向导也能够通过选择菜单 开始 所有程序 MySQL MySQL Server 6.0 MySQL Server Instance Config Wizard来打开。安装MySQL客户端治理软件Navicat Lite(可选)MySQL治理工具,导航猫免费版(Navicat Lite),可获得不低于SQL Server的易用度, 例如可视化建表, 修改表结构, 创建外键, 修改数据, 执行查询等功能,此软件的中文版能够在 HYPERLINK /download.html /download.html 下载*非商业 - 免费精简版。安装和配置邮件服务器
28、 (可选)我们使用的本机测试邮件服务器为ForwardMail Server,启动后的邮箱登录页面是 HYPERLINK http:/localhost:1086/ http:/localhost:1086/。在开始菜单中可启动邮件服务器配置工具,然后添加一个的域名,之后再点击左侧导航中的本地邮箱,添加必要的测试用邮箱地址。创建数据库和表创建数据库使用任意软件连接至MySQL服务器,然后创建数据库myscm。创建数据库表执行文件beanscm.sql来创建应用程序运行所需的表和差不多数据。预备必要的类库文件系统基于Struts 2Hibernate+MySQL开发,并用到了一些前台技术。下面列
29、出了用到的Java和Web层类库:Struts 2*Hibernate 3MySQL JDBC 驱动JavaMail + JAF(Java激活框架 Java Activation Framework, Java对象变成字符串形式来传播)*JSTL类库(可从apache-tomcat-6.0.14webappsexamplesWEB-INFlib下找到)jstl.jar standard.jarCommons-FileUpload(以及Commons-IO)注:加*的包可使用MyEclipse自带的类库。Web框架(跨扫瞄器)FckEditor 可视化编辑HTMLXLoadTree 动态加载XM
30、L生成JavaScript树组件jQuery AJAX框架查询DOM对象,简洁,现成控件较少ExtJS 比较全面的AJAX框架 树,菜单,表格编辑器(Grid)学习比较困难 -显示公告(页面内弹出窗口)1. 导入CSS和EXT的JS2. 写Ext.onRead3. 写入功能代码EasyValidation 表单验证框架开发项目创建myscm2 Web项目选择菜单 File New Web Project, 输入项目名 myscm2,选择J2EE 1.4。注意:不要选择Java EE 5,因为会导致JavaMail类库冲突。加入必要的JAR类库将必须的JAR包复制到WEB-INF/lib下。小提
31、示:Hibernate的类库能够通过点击菜单 MyEclipse Add Hibernate Capabilities.来添加(此菜单位置可能略有出入),并同时指定数据库连接信息及创建Hibernate全局配置文件。struts2-blank-.war - 5个差不多的Struts 2 JARstruts2-showcase-.war - fileupload 和 IOJSTL从tomcat下找 webappsexamplesWEB-INFlibMYSQL 驱动Hibernate的包导入JSP页面文件为了节约时刻,JSP文件我们将不再一一从头开发。将项目所需的页面和相关资源从myscm项目中复
32、制到本项目的WebRoot下即可(不要复制web.xml及源代码文件)。提示:假如文件显示为带?号的图标,如右图所示:,这不是文件错误,是因为原来的项目带了CVS版本操纵信息,可在项目上选择上下文菜单Team Disconnect.来解决此问题。CVS版本操纵,后面会介绍。修改web.xml加入Struts 2过滤器struts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/*设置Hibernate全局配置文件创建文件srchibernate.cfg.xml,修改文件中的数据库连接信息:org.hibernate.dialect.M
33、ySQLDialectjdbc:mysql:/localhost:3306/beanscm?useUnicode=true&characterEncoding=GBKroot1234com.mysql.jdbc.Drivertrue请将代码中红色内容修改为您自己的数据库连接IP,用户名和密码。自动建表,INDEX不推举。手工建表。创建项目包结构建议的包命名的规则是:公司域名.模块名.子模块名开发通用工具类这些类和具体的业务无关,因此我们要单独开发以下的几个类。util.MD5BeanMD5摘要计算难点:猎取MD5算法和转16进制字符串显示。util.mail.MailSender 邮件发送难点
34、:message.addRecipients(Message.RecipientType.TO, InternetAddress .parse(getTo();if(isHtmlFormat() message.setContent(getBody(), text/html;charset=GBK); else message.setText(getBody();发附件- 发一个动态的保单JPG过程:创建连接属性对象Properties props = new Properties();props.put(tocol, smtp );/ 协议,必须设置后边的属性是可选的/props.put(m
35、ail.smtp.host, localhost );/ 服务器地址props.put(mail.smtp.port, 25 );/ SMTP 服务器端口props.put(mail.debug, true );/ 是否为调试模式创建Session对象 Session.getInstance(props)创建MimeMessage对象 new MimeMessage(session)设置邮件相关信息使用Transport对象发送消息 session.getTransport();connect();send();filters.TomcatFormFilter用来解决Tomcat表单提交乱码问
36、题(GET方法提交乱码)难点:HttpServletRequestWrapper和字符串编码转换加入到web.xml并编写一个JSP页面进行测试。开发实体类和HBM文件实体类和HBM文件可用MyEclipse生成,具体方法参考本人所著的免费电子书MyEclipse 6 Java 开发中文教程的7.4.5 使用反向工程快速生成 Java POJO 类,映射文件和 DAO一节。因此作为学习者来讲,推举尝试自己来手写HBM文件和Entity类,然而实际开发时一般差不多上用工具生成。难点(一对多和多对一):Role.hbm.xml Resource.hbm.xml 您应该了解下列内容:实体类都有什么限
37、制?什么缘故?JavaBean:无参数的构造器。要有getter和setter,属性应为private。实体类 extends JavaBean: 必须实现java.io.Serializable,不能使用final修饰符,必须有ID属性和至少一个属性,推举实现hashCode()和equals()方法。把HBM文件加入到hibernate.cfg.xml中。开发DAO层HibernateSessionFactory跨线程的对Session进行统一打开和关闭, 可配合Filter实现同一次访问实现自动治理Session和事务.DAO: load() - openSession() 读取数据 -
38、 closeSession() - JSP - user.address ThreadLocal + Filter解决Spring 提供了方案 OpenSessionInViewFilterlazy = false / 不推举fetch=”join” / 不推举Hibernate.initilizer(entity);query 有个关键字 fetch, from User fetch.?1. 创建SessionFactory2. 创建 static ThreadLocal 变量3. 编写猎取Session和关闭Session的方法4. 编写事务处理的方法: 开始, 提交, 回滚BaseDAO
39、小延伸: Hibernate中分页相关的对象和方法是哪些?一万条记录, 从第200条开始读到第20条.public Query setFirstResult(int firstResult); 设置开始读取的行数public Query setMaxResults(int maxResults); 设置最多读取的记录数Query q = s.createQuery(“from User”);return q.setFirstResult(200).setMaxResults(20).list();200 = 每页显示20条 * 当前页10, 每页显示几条练习: 写一个支持分页的查询方法List
40、 pagedQuery(String hql, int currentPage, int pageSize, Object. params)SQL: 列不名select sum(login_count) as 登录总次数 from scm_userOpenSessionInViewFilter实现的功能: 执行后续的Filter和Servlet/JSP时,首先打开事务,然后提交事务,假如出现异常则回滚事务, 还解决了JSP页面lazy载入数据时发觉session被关闭的问题.注意:此Filter必须加在所有的Filter之前,包括Struts 2 Filter,否则可能出现无法正常提交事务的问
41、题(差不多有人遇到过此问题导致无法正常注册).try 1. 打开session并开始事务2. 向后执行ServletChain, 包括后续DAO和Action等 chain.doFilter(request, response);3. 提交事务 catch (Exception e) 4. 回滚事务5. 显示出错信息 finally 6. 关闭session注册到web.xml.开发用户模块BaseActionSupport(可选)此类提供一些通用的功能, 包括猎取Request对象,猎取参数,猎取属性,DAO等,那个类完全是可选的.属性列表:baseDAO 差不多的DAO对象; title,
42、标题; message属性;resetMessages() - 重置title标题和message需要注意的方法:mergeParamsAsURI()/* * 将所有URL参数合并成一个URL字符串(page参数除外), 提供分页时显示.list.action?page=3¶1=11¶2=bb= list.action?page=3¶1=11¶2=bb&page=3+1 下一页 * return 字符串, 如: para1=11¶2=bb */public String mergeParamsAsURI() Map params = getRequest
43、().getParameterMap();for(String value : values) System.out.println(value= + value);out.append(.URLEncoder.encode(key, UTF-8) + =);out.append(.URLEncoder.encode(value, UTF-8) + &);/ 删除末尾多余的 & 字符if(out.toString().endsWith(&) out.deleteCharAt(out.length() - 1);/* * 猎取当前会话的登录用户信息 * return User */public
44、User getSessionLoginedUser() User currentUser = (User) getSession(loginedUser);return currentUser;UserAction类摘要设计文件上传相关的属性: File photo, String photoFileName; photo是表单域的名字.1. JDK 版本 2. JAR 包冲突 XML解析器 Hibernate xmlapis.jar前台:头像: 如何预览头像?! (IE扫瞄器比较容易实现, 其他的没保证, 安全 IE6能够, IE7和其他扫瞄器能够通过降低安全级来实现) logo”img.
45、src = file.value;Struts 2通配符方式配置采纳此配置能够大大减少代码量, Struts 1中没有对等的内容./message.jsp/user/list.jspStruts.xml 的写法能够从 Struts2完整包/app/ struts2-blank-.wardelete list重定向到另一个Actionlist(Action的name)Result重定向到另一个地址/index.jsp用户列表功能user/list.action UserAction.list() /user/list.jsplist() 1. 查询记录得到数据集合 results2. setAt
46、tribute(属性名, results)3. return 结果名list.jsp$ 删除 user/delete.action?id=$user.id 修改user/editUI.action?id=$user.id删除user/delete.action?id=3 UserAction.delete() message.jsp/ list.action1. findById() - User user;2. dao.delete(user);表单AJAX验证功能前台写法:用户名: 后台写法:String ajaxValidate1. 用户名敏感词禁止注册BadWordsFilter2.
47、用户名唯一3. Email唯一4. 图片验证码合法Action配置:/ajax_response.jsp/ajax_response.jsp$message注册/reg.jsp + /regcode.jsp + EasyValidation reg() /message.jspregcode.jsp(可用Servlet代替) 生成验证码设置页面内容类型为图片清空往常缓冲区创建彩色缓冲图猎取图形(画笔)对象填充白色的背景随机产生155条干扰线,使图象中的认证码不易被其它程序探测到(可选)绘制颜色为红色生成随机数字验证码并存入session, 然后输出到图片中设定字体绘制验证码到图片上关闭对象,
48、释放内存, 刷新到图形对象使用ImageIO把内存的图片编码到输出流, 参数依次为: 图片对象, 格式(png,jpg), 输出流难点(可复制粘贴): 255)fc = 255;if (bc 255)bc = 255;int r = fc + random.nextInt(bc - fc);int g = fc + random.nextInt(bc - fc);int b = fc + random.nextInt(bc - fc);return new Color(r, g, b);%/随机产生155条干扰线,使图象中的认证码不易被其它程序探测到g.setColor(getRandColo
49、r(160, 200);for (int i = 0; i 155; i+) int x = random.nextInt(100);int y = random.nextInt(20);int xl = random.nextInt(12);int yl = random.nextInt(12);g.drawLine(x, y, x + xl, y + yl);reg() 注册方法检查session验证码和表单参数中是否一致检查输入的验证码用户名敏感词禁止注册密码MD5保存保存注册日期设置激活状态为false生成一个激活码 activeCode并存入数据库UUID重命名文件并保存上传的图片到
50、 /upload猎取/upload真实路径重命名为 uuid.扩展名File.renameTo()快速复制文件更新头像的存储路径到实体类发送激活邮件String activeURL = http:/localhost:8080/myscm2/user/activation.action?code=+ activeCode;String message = 您注册了新用户, 激活码是: + activeCode+ , 可点击此地址激活账户: + + activeURL + + ;返回注册结果页面激活activation() message.jsp从表单参数读取激活码依照UUID激活码找到当前用户
51、from User where tempcode = ?检查激活状态, 假如差不多激活, 就提示他无需重复激活更新激活标志位(active)到数据库返回成功激活/失败信息用户登录login.jsp login() message.jsp1. 对密码进行MD5摘要计算2. 是否存在给定用户(依照用户名查找)检查是否激活!3. 假如用户存在, 比较用户名, 密码和用户类型4. 登录成功用户信息存入Session- loginedUser更新登录次数5. 显示登录结果6. 依照用户类型转向不同的功能页面1. 治理员转向 /admin/index.jsp2. 其他用户转向/welcome.jsp用户注
52、销logout.jsp清空session或者invalidate session修改用户自己资料user/edit.jsp update() message.jsp假如是后台治理, 需要依照ID查出用户的信息修改的步骤:1. 从Action查出用户的信息editUI()1. findById() - User user;2. setAttribute(user, user)3. 返回到edit.jsp2. 显示修改表单页面user/edit.jsp - 依照ID修改用户(后台), 修改自己的就不需要.只修改了一部分字段3. 提交到Action来更新数据update()1. 数据库找findBy
53、Id() - User user; 老记录(依照ID改才需要)2. 先设置user部分字段的新信息, 再update()假如头像不为空, 需要先删掉老头像, 再保存新头像并更新到数据库3. 转向message/4. 显示修改结果(成功/失败)取回密码retrievePassword.htm UserAction.retrivePwd() + 发邮件给用户 message.jspEmail有效性检查依照Email找到用户信息生成一个随机的密码并MD5摘要后更新到数据库发送取回密码通知邮件 + 提示用户去检查邮箱修改个人密码user/changePassword.jsp UserAction.ch
54、angePassword() message.jsp检查旧密码不能为空, 新旧密码必须一致, 长度限制1. 确保用户登录2. 取出已登录用户信息3. 检查用户输入的旧密码(MD5)是否正确4. 新密码MD5存入数据库5. 更新下session里面的loginedUser对象6. 提示更新成功 + 用户通知邮件(TODO)依照ID查看用户信息findById() user/viewInfoById.jspfrom User where id = ?用户信息存入 request的attribute: setUser(u);转向前台页面用EL显示开发安全过滤器模块自底而上的操纵方式/目录/文件名RO
55、LE, /目录/文件名ROLE, /目录/*四个路径变量, 四个HQL, 四个boolean值分不对应HQL的执行结果, 有记录确实是true四个路径变量1. 请求上下文路径 contextPath /myscm22. 请求路径 requestPath/myscm2/admin/index.jsp3. 资源相对路径 resourceUri= requestPath.substring(contextPath.length() - /admin/index.jsp4. 目录通配符路径 folderUri - /admin/*取到RoleID四个HQL资源访问检查的顺序是(以访问/admin/in
56、dex.jsp为例):1. 检查是否存在同意访问/admin/index.jsp的角色 条件1; trueselect count(*) from resource where uri= /admin/index.jsp 2. 检查是否存在同意访问/admin/*的角色 条件2; trueselect count(*) from resource where uri= /admin/*3. 假如 条件1 和 条件2 都不存在, 则同意任何角色访问此URL;4. 假如 条件1 或 条件2 之一存在, 那么只有同意的角色才可访问此URL, 进入5;5. 检查 是否存在同意当前角色访问/admin/
57、index.jsp的记录, 是则运行访问, 否则进入下一步; select count(*) from resource where uri= /admin/index.jsp and roleId = -16. 检查是否存在同意当前角色访问/admin/*的记录, 是则同意访问, 否则禁止用户访问并显示出错信息. select count(*) from resource where uri= /admin/* and roleId = -1开发后台治理模块(此模块建议作为练习)前台设计技术细节: XLoadTree实现树状组件tree.xml text 标签 src 指向另一个xml树定义
58、 action 超链接地址 icon 目录/节点展开前的图片 openIcon 目录展开后的图片target 超链接的目标框架(文档中没有)可视化HTML编辑器:FckEditor window.onload = function()var sBasePath = fckeditor/ ;/ 指向 fckeditor的存放目录var oFCKeditor = new FCKeditor( 要替换的文本区表单域的名字 ) ;oFCKeditor.Height= 500px ;/ 高度, 能够用 100%/oFCKeditor.Width= 400px ;/ 宽度oFCKeditor.BasePa
59、th= sBasePath ;/ 设置基础路径oFCKeditor.ConfigSkinPath = ./skins/office2003/ ;/ 换肤, 查看 fckeditoreditorskins 下的皮肤目录名/oFCKeditor.ToolbarSet = Default;/ 切换工具条配置, 默认为完全, Basic是简洁模式, 能够用来发评论时oFCKeditor.ConfigFullPage = true ;/ 指定编辑的HTML代码是否包括完整标记,可用来做内容治理时公布完整HTML页面oFCKeditor.ReplaceTextarea() ;/ 替换文本区为可视化网页编辑
60、器用户治理概要设计备注: 为了复用一些方法, 此类应继承自 UserAction.用户搜索admin/user_search.jsp AdminAction.searchByUserName() admin/user_view.jsp添加新用户admin/user_add.jsp AdminAction.addUser() /message.jsp扫瞄所有用户AdminAction.listUser() admin/user_list.jsp此模块已实现, 但应用户列表页面应稍作修改, 不显示删除治理员的链接, 可复用父类UserAction中的方法删除用户deleteUser.action?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国婴儿纸尿裤市场供需渠道分析及发展竞争力研究报告
- 2024-2030年中国太阳能灶行业发展形势规划分析报告版
- 2024产品质量安全评价技术服务合同
- 2024-2030年中国地理信息行业竞争格局及投资战略规划分析报告
- 2024-2030年中国古典家具行业竞争格局发展趋势预测报告
- 2024-2030年中国发泡胶吊饰产业未来发展趋势及投资策略分析报告
- 2024-2030年中国厕所行业未来发展趋势及投资规模分析报告
- 2024-2030年中国印染行业需求前景预测及发展策略分析报告
- 2024-2030年中国冷链及传导技术行业创新模式及投资战略建议报告
- 2024-2030年中国农业科技行业转型升级模式及未来投资规划分析报告
- 方位介词附习题及参考答案
- “二十四节气”研究性报告
- 个人挂靠公司协议书(大全)
- 危险化学品物质氮气(N2)安全告知卡
- 五年级上册数学课件-一二单元 北师大版 (共 33 张ppt)
- 一年级数学上册课件《分与合》第2课时6、7的分与合
- 国内外静脉输液的现状与发展
- 医美整形全套上墙制度
- DBJ04-T 402-2020城乡养老设施建设标准
- 蓝色卡通风2022小学六年级班干部竞选PPT动态模板
- 生命科学概论0603课件
评论
0/150
提交评论