版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SCM项目手把手开发文档作者:刘长炯日期:2008-9-16版本:1.0TOC 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安装JJDK和MyEcllipse 5.5/66.0/6.5
2、 PAGEREF _Toc209658886 h 3 HYPERLINK l _Toc209658887 2.2下载和和安装Tommcat PAGEREF _Toc209658887 h 3 HYPERLINK l _Toc209658888 2.3安装MMySQL 5.0/66.0 数据据库 PAGEREF _Toc209658888 h 4 HYPERLINK l _Toc209658889 2.4安装MMySQL客客户端管理软软件Naviicat LLite(可可选) PAGEREF _Toc209658889 h 4 HYPERLINK l _Toc209658890 2.5安装和和配
3、置邮件服服务器 (可选) PAGEREF _Toc209658890 h 5 HYPERLINK l _Toc20096588891 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
4、6 HYPERLINK l _Toc209658895 3开发项目 PAGEREF _Toc209658895 h 7 HYPERLINK l _Toc209658896 3.1创建mmyscm22 Web项项目 PAGEREF _Toc209658896 h 7 HYPERLINK l _Toc209658897 3.2加入必必要的JARR类库 PAGEREF _Toc209658897 h 8 HYPERLINK l _Toc209658898 3.3导入JJSP页面文文件 PAGEREF _Toc209658898 h 9 HYPERLINK l _Toc209658899 3.4修改w
5、web.xmml加入Struuts 2过过滤器 PAGEREF _Toc209658899 h 9 HYPERLINK l _Toc209658900 3.5设置HHibernnate全局局配置文件 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.1uutil.MMD5Be
6、aan PAGEREF _Toc209658903 h 12 HYPERLINK l _Toc209658904 3.7.2uutil.mmail.MMailSeender PAGEREF _Toc209658904 h 12 HYPERLINK l _Toc209658905 3.7.3ffilterrs.TommcatFoormFillter PAGEREF _Toc209658905 h 13 HYPERLINK l _Toc209658906 3.8开发实实体类和HBBM文件 PAGEREF _Toc209658906 h 13 HYPERLINK l _Toc209658907 3.
7、9开发DDAO层 PAGEREF _Toc209658907 h 15 HYPERLINK l _Toc209658908 3.9.1HHibernnateSeessionnFactoory PAGEREF _Toc209658908 h 15 HYPERLINK l _Toc209658909 3.9.2BBaseDAAO PAGEREF _Toc209658909 h 16 HYPERLINK l _Toc209658910 3.9.3OOpenSeessionnInVieewFiltter PAGEREF _Toc209658910 h 16 HYPERLINK l _Toc209658
8、911 3.10开发发用户模块 PAGEREF _Toc209658911 h 17 HYPERLINK l _Toc209658912 3.10.1BaseAActionnSuppoort(可选选) PAGEREF _Toc209658912 h 17 HYPERLINK l _Toc209658913 3.10.2UserAActionn类摘要设计计 PAGEREF _Toc209658913 h 19 HYPERLINK l _Toc209658914 3.10.3Strutts 2通配配符方式配置置 PAGEREF _Toc209658914 h 20 HYPERLINK l _Toc
9、2096589915 3.10.4用户列表功功能 PAGEREF _Toc209658915 h 20 HYPERLINK l _Toc209658916 3.10.5删除 PAGEREF _Toc209658916 h 21 HYPERLINK l _Toc209658917 3.10.6表单AJAXX验证功能 PAGEREF _Toc209658917 h 21 HYPERLINK l _Toc209658918 3.10.7注册 PAGEREF _Toc209658918 h 21 HYPERLINK l _Toc209658919 3.10.8激活 PAGEREF _Toc209658
10、919 h 23 HYPERLINK l _Toc209658920 3.10.9用户登录 PAGEREF _Toc209658920 h 23 HYPERLINK l _Toc209658921 3.10.100用户注销 PAGEREF _Toc209658921 h 23 HYPERLINK l _Toc209658922 3.10.111修改用户自自己资料 PAGEREF _Toc209658922 h 24 HYPERLINK l _Toc209658923 3.10.122取回密码 PAGEREF _Toc209658923 h 24 HYPERLINK l _Toc20965892
11、4 3.10.133修改个人密密码 PAGEREF _Toc209658924 h 25 HYPERLINK l _Toc209658925 3.10.144根据ID查看用户户信息 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前
12、台设计 PAGEREF _Toc209658928 h 26 HYPERLINK l _Toc209658929 3.12.2用户管理概概要设计 PAGEREF _Toc209658929 h 27 HYPERLINK l _Toc209658930 用户搜索 PAGEREF _Toc209658930 h 27 HYPERLINK l _Toc209658931 添加新用户户 PAGEREF _Toc209658931 h 28 HYPERLINK l _Toc209658932 浏览所有用用户 PAGEREF _Toc209658932 h
13、28 HYPERLINK l _Toc209658933 删除用户 PAGEREF _Toc209658933 h 28 HYPERLINK l _Toc209658934 3.13站点点全局配置及及加载 PAGEREF _Toc209658934 h 28 HYPERLINK l _Toc209658935 加载 PAGEREF _Toc209658935 h 28 HYPERLINK l _Toc209658936 修改 PAGEREF _Toc209658936 h 28 HYPERLINK l _Toc2096589337 3.14安全中
14、心 PAGEREF _Toc209658937 h 30 HYPERLINK l _Toc209658938 3.14.1页面设计 PAGEREF _Toc209658938 h 30 HYPERLINK l _Toc209658939 3.14.2添加新角色色 PAGEREF _Toc209658939 h 30 HYPERLINK l _Toc209658940 3.14.3浏览所有角角色 PAGEREF _Toc209658940 h 30 HYPERLINK l _Toc209658941 3.14.4添加资源访访问许可 PAGEREF _Toc209658941 h 30 HYPER
15、LINK l _Toc209658942 3.14.5浏览所有资资源访问许可可 PAGEREF _Toc209658942 h 30 HYPERLINK l _Toc209658943 4供应商和商商品模块 PAGEREF _Toc209658943 h 30 HYPERLINK l _Toc209658944 4.1商店首首页面 PAGEREF _Toc209658944 h 30 HYPERLINK l _Toc209658945 4.2供应商商模块 PAGEREF _Toc209658945 h 32 HYPERLINK l _Toc209658946 4.2.1类类设计 PAGEREF
16、 _Toc209658946 h 32 HYPERLINK l _Toc209658947 4.2.2注注册供应商用用户 PAGEREF _Toc209658947 h 32 HYPERLINK l _Toc209658948 4.2.3添添加供应商(TODO 供应商审批批,隶属于交易易员模块) PAGEREF _Toc209658948 h 32 HYPERLINK l _Toc209658949 4.2.4查查看我的供应应商列表 PAGEREF _Toc209658949 h 32 HYPERLINK l _Toc209658950 4.2.5查查看所有供应应商列表 PAGEREF _To
17、c209658950 h 33 HYPERLINK l _Toc209658951 4.2.6查查看分成总额额 PAGEREF _Toc209658951 h 33 HYPERLINK l _Toc209658952 4.3商品模模块 PAGEREF _Toc209658952 h 33 HYPERLINK l _Toc209658953 4.3.1类类设计 PAGEREF _Toc209658953 h 33 HYPERLINK l _Toc209658954 4.3.2页页面设计 PAGEREF _Toc209658954 h 34 HYPERLINK l _Toc209658955 4.
18、3.3添添加商品 PAGEREF _Toc209658955 h 35 HYPERLINK l _Toc209658956 4.33.4浏览商品信信息 PAGEREF _Toc209658956 h 35 HYPERLINK l _Toc209658957 4.3.5浏浏览我的商品品列表 PAGEREF _Toc209658957 h 35 HYPERLINK l _Toc209658958 4.3.6浏浏览商品列表表 PAGEREF _Toc209658958 h 35 HYPERLINK l _Toc209658959 4.3.7修修改商品信息息 PAGEREF _Toc209658959
19、 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 _Toc209658962 h 35 HYPERLINK l _Toc209658963 6程序开发调调试交流 PAGEREF _Toc209658963 h 36 HYPERLINK l _Toc209658964 6.1No resullt def
20、fined for aactionn XXX and rresultt succcess(iinput)的真正错误误原因 PAGEREF _Toc209658964 h 36 HYPERLINK l _Toc209658965 6.2排排除法 PAGEREF _Toc209658965 h 37 HYPERLINK l _Toc209658966 6.2.1排排除浏览器及及浏览器版本本的因素 PAGEREF _Toc209658966 h 37 HYPERLINK l _Toc209658967 6.2.2排排除多余属性性的干扰 PAGEREF _Toc209658967 h 37 HYPER
21、LINK l _Toc209658968 6.2.3JJDK运行版版本和开发工工具编译器版版本是否匹配配? PAGEREF _Toc209658968 h 38 HYPERLINK l _Toc209658969 6.2.4重重新发布Weeb应用或者者复制新的JJAR/Cllass文件件了嘛? PAGEREF _Toc209658969 h 39 HYPERLINK l _Toc209658970 6.2.5HHibernnate的包包加完整了嘛嘛? PAGEREF _Toc209658970 h 39 HYPERLINK l _Toc209658971 6.2.6别别的类似项目目是否能正常常
22、运行? PAGEREF _Toc209658971 h 40 HYPERLINK l _Toc209658972 6.2.7peertiess是我们的好好朋友 PAGEREF _Toc209658972 h 40 HYPERLINK l _Toc209658973 6.2.8人人不如新,衣不如旧 PAGEREF _Toc209658973 h 41 HYPERLINK l _Toc209658974 6.2.9把把能正确运行行的项目的jjar包集中中起来,分门别类放放置 PAGEREF _Toc209658974 h 41 HYPERLINK l _Toc209658975 6.3关联程程序源
23、码 PAGEREF _Toc209658975 h 42 HYPERLINK l _Toc209658976 6.4JDKK6和Strutts 2冲突突的问题真实实原因及解决决办法 PAGEREF _Toc209658976 h 42 HYPERLINK l _Toc209658977 6.5使用UUTF-8或或者GBK编码的的MySQLL实例 PAGEREF _Toc209658977 h 48 HYPERLINK l _Toc209658978 6.6另外一一个HibeernateeSessiionFacctory事事务的异常 PAGEREF _Toc209658978 h 50 HYPE
24、RLINK l _Toc209658979 6.7MySSQL安装版版停止运行 PAGEREF _Toc209658979 h 50 HYPERLINK l _Toc209658980 6.8MyEEclipsse不会自动动删除项目里里面已经去掉掉的JAR PAGEREF _Toc209658980 h 50 HYPERLINK l _Toc209658981 6.9MySSQL导出完完整的建表语语句 PAGEREF _Toc209658981 h 51 HYPERLINK l _Toc2096558982 6.10Strutts 2不要要加所有的JJAR文件,否则项目会会报错 PAGEREF
25、 _Toc209658982 h 51编写目的本文档列出了了本项目的基基本开发步骤骤(只包含用用户模块和后后台管理模块块),用于复复习和开发时参考。开发时遵循的的原则为尽量量简单并提高高代码复用,减减少重复的代代码。搭建基本开发环环境安装JDK和MMyEcliipse 55.5/6.0/6.55本项目需要JDDK 1.55(不要使用用JDK 11.6,因为为发现可能会会导致BUGG发生而无法法载入Strruts 22配置文件)。本本项目使用MMyEcliipse 55.5或者更更高版本开发发,用其他工工具例如Ecclipsee Javaa EE版本本也可,主要要用到JSPP编辑器及WWeb项目
26、发发布功能。下载和安装Toomcat安装好Tomccat 6.0(或者55.5及更高高版本)注意: 由于于 Struuts 2和和 Tomccat 5.0 有冲突突, 因此不不能用Tommcat 55.Tomcat是是一款开源免免费的JSPP服务器,可可以在 HYPERLINK .org/ 下下载并安装。建议下载压缩包包版本(文件件名是apaache-ttomcatt-6.x.xx.ziip),而不是Wiindowss Servvice IInstalller的EEXE安装文文件。 解压压缩到磁盘目目录,记下安安装路径例如如c:appache-tomcaat-6.00.14, 和JDK的的安装
27、一样,为为了避免日后后产生问题错错误,解压缩缩的路径不要要带有空格,如如c:Prrogramm Filees。安装MySQLL 5.0/6.0 数数据库可以访问 MyySQL 官官方网站下载载原版安装程程序和JDBBC驱动,请请访问: HYPERLINK 6.0.httml#wiin32,下下载安装包(如如文件myssql-esssentiial-6.0.5-aalpha-win322.msi)双双击进行安装装,在最后一一个屏幕点击击启动Connfigurre thee MySQQL Serrver nnow启动实实例配置工具具即可,如下下图所示。配置过程请参考考视频 HYPERLINK my
28、sql_server_config.exe myssql_seerver_confiig.exee。此向导也也可以通过选选择菜单 开开始 所所有程序 MySQQL MySSQL Seerver 6.0 MySQQL Serrver IInstannce Coonfig Wizarrd来打开。安装MySQLL客户端管理理软件Navvicat Lite(可选)MySQL管理理工具,导航航猫免费版(Naviccat Liite),可可获得不低于于SQL SServerr的易用度, 例如可视视化建表, 修改表结构构, 创建外外键, 修改改数据, 执执行查询等功功能,此软件件的中文版可可以在 HYPER
29、LINK 下载载*非商业 - 免费精精简版。安装和配置邮件件服务器 (可选)我们使用的本机机测试邮件服服务器为FoorwarddMail Serveer,启动后后的邮箱登录录页面是 HYPERLINK 。在开始菜单中可可启动邮件服服务器配置工工具,然后添添加一个的域名名,之后再点点击左侧导航航中的本地邮邮箱,添加必必要的测试用用邮箱地址。创建数据库和表表创建数据库使用任意软件连连接至MySSQL服务器器,然后创建建数据库myyscm。创建数据库表执行文件beaanscm.sql来创创建应用程序序运行所需的的表和基本数数据。准备必要的类库库文件系统基于Strruts 22Hibeernatee+
30、MySQQL开发,并并用到了一些些前台技术。下下面列出了用用到的Javva和Webb层类库:Struts 2*Hibernnate 33MySQL JJDBC 驱驱动JavaMaiil + JJAF(Jaava激活框框架 Javva Acttivatiion Frramewoork, JJava对象象变成字符串串形式来传播播)*JSTL类库库(可从apaache-ttomcatt-6.0.14weebappssexammplesWEB-IINFliib下找到)jstl.jar sstandaard.jaarCommonss-(以及CCommonns-IO)注:加*的包可可使用MyEEclips
31、se自带的类类库。Web框架(跨跨浏览器)FckEdittor 可视视化编辑HTTMLXLoadTrree 动态态加载XMLL生成JavvaScriipt树组件件jQuery AJAX框框架查询DDOM对象,简简洁,现成控控件较少ExtJS 比比较全面的AAJAX框架架 树,菜单单,表格编辑器器(Gridd)学习比较较困难 显示公告告(页面内弹弹出窗口)1. 导入CSSS和EXTT的JS2. 写Extt.onReead3. 写入功能能代码EasyVallidatiion 表单单验证框架开发项目创建myscmm2 Webb项目选择菜单 Fiile New Web Projeect, 输输入项目名
32、 myscmm2,选择JJ2EE 11.4。注意:不要选择择Java EE 5,因因为会导致JJavaMaail类库冲冲突。加入必要的JAAR类库将必须的JARR包复制到WWEB-INNF/libb下。小提示:Hibbernatte的类库可可以通过点击击菜单 MyyEclippse Add HHibernnate CCapabiilitiees.来添添加(此菜单单位置可能略略有出入),并并同时指定数数据库连接信信息及创建HHibernnate全局局配置文件。struts22-blannk-2.00.11.22.war - 5个个基本的Sttruts 2 JARRstruts22-showwca
33、se-.wwar - 和 IIOJSTL从toomcat下下找 webapppsexxampleesWEBB-INFlibMYSQL 驱驱动Hibernaate的包导入JSP页面面文件为了节约时间,JJSP文件我我们将不再一一一从头开发发。将项目所所需的页面和和相关资源从从myscmm项目中复制制到本项目的的WebRooot下即可可(不要复制制web.xxml及源代代码文件)。提示:如果文件件显示为带?号的图标,如如右图所示:,这不是文文件错误,是是因为原来的的项目带了CCVS版本控控制信息,可可在项目上选择择上下文菜单Teamm Diisconnnect来解决此此问题。CVS版本控制制,后面
34、会介介绍。修改web.xxml加入SStrutss 2过滤器器strutts2org.aapachee.struuts2.ddispattcher.FilteerDisppatcheerstrutts2/*设置Hiberrnate全全局配置文件件创建文件srcchibeernatee.cfg.xml,修修改文件中的的数据库连接接信息:org.hhibernnate.ddialecct.MySSQLDiaalectjdbc:mmysql:/loccalhosst:33006/beaanscm?useUnnicodee=truee&;charaacterEEncodiing=GBBKroot123
35、4com.mmysql.jdbc.Driveertrue请将代码中红色色内容修改为为您自己的数数据库连接IIP,用户名名和密码。自动建表,INNDEX不推推荐。手工建表。创建项目包结构构建议的包命名的的规则是:公公司域名.模模块名.子模模块名开发通用工具类类这些类和具体的的业务无关,因因此我们要单独开发以下下的几个类。util.MDD5BeannMD5摘要计算算难点:获取MDD5算法和转转16进制字字符串显示。util.maail.MaailSennder 邮件发送难点:messsage.addReecipieents(MMessagge.ReccipienntTypee.TO, Innter
36、neetAddrress .parsee(getTTo();if(iisHtmllFormaat() messsage.setCoontentt(getBBody(), teext/httml;chharsett=GBK); ellse messsage.setTeext(geetBodyy();发附件- 发一个动态态的保单JPPG过程:创建连接属性对对象Proppertiees proops = new Prropertties();propps.putt(otocoll, smttp );/ 协议议,必须设置置后边的属性是可可选的/prrops.pput(mmail.ssmtp.hhost
37、, loccalhosst );/ 服务务器地址propps.putt(maiil.smttp.porrt, 25 );/ SMTP 服务器端口口propps.putt(maiil.debbug, truee );/ 是否为调试试模式创建Sessiion对象 Sessiion.geetInsttance(propss)创建MimeMMessagge对象 new MMimeMeessagee(sesssion)设置邮件相关信信息使用Transsport对对象发送消息息 sessiion.geetTrannsportt();coonnectt();seend();filterss.TomcaatF
38、ormmFilteer用来解决Tommcat表单单提交乱码问问题(GETT方法提交乱乱码)难点:HttppServlletReqquestWWrappeer和字符串串编码转换加入到web.xml并编编写一个JSSP页面进行行测试。开发实体类和HHBM文件实体类和HBMM文件可用MyyEclippse生成,具具体方法参考考本人所著的的免费电子书书MyEcclipsee 6 Jaava 开发发中文教程的的7.4.55 使用反向向工程快速生生成 Javva POJJO 类,映映射文件和 DAO一节节。当然作为为学习者来说说,推荐尝试试自己来手写写HBM文件件和Entiity类,但但是实际开发时一一般
39、都是用工工具生成。难点(一对多和和多对一):Role.hbbm.xmll Resourcce.hbmm.xml 您应该了解下列列内容:实体类都有什么么限制?为什什么?JavaBeaan:无参数数的构造器。要要有gettter和seetter,属属性应为prrivatee。实体类 exttends JavaBBean: 必须实现jjava.iio.Serrializzable,不不能使用fiinal修饰饰符,必须有有ID属性和和至少一个属属性,推荐实实现hashhCode()和equuals()方法。把HBM文件加加入到hibbernatte.cfgg.xml中中。开发DAO层Hibernaat
40、eSesssionFFactorry跨线程的对Seessionn进行统一打打开和关闭, 可配合FFilterr实现同一次次访问实现自自动管理Seessionn和事务.DAO: looad() - oppenSesssion() 读取取数据 - closseSesssion() - JSP usser.adddresss ThreadLLocal + Fillter解决决Spring 提供了方案案 OpennSessiionInVViewFiilterlazy = falsee / 不不推荐fetch=”join” / 不不推荐Hibernaate.innitiliizer(eentityy);
41、query 有有个关键字 fetchh, froom Useer fettch?1. 创建SeessionnFactoory2. 创建 sstaticc ThreeadLoccal 变量3. 编写获取取Sessiion和关闭闭Sessiion的方法法4. 编写事务务处理的方法法: 开始, 提交, 回滚BaseDAOO小延伸: Hiibernaate中分页页相关的对象象和方法是哪哪些?一万条记录, 从第2000条开始读到到第20条.public Queryy setFFirstRResultt(int fiirstReesult); 设置开开始读取的行行数public Queryy setMMa
42、xRessults(int maaxResuults); 设置最多多读取的记录录数Query qq = s.creatteQuerry(“from User”);return q.settFirsttResullt(2000).settMaxReesultss(20).liist();200 = 每每页显示200条 * 当当前页10, 每页显示示几条练习: 写一个个支持分页的的查询方法List paagedQuuery(SStringg hql, int curreentPagge, innt paggeSizee, Objject parrams)SQL: 列别别名select sum(ll
43、ogin_countt) ass 登录总总次数 ffrom sscm_usserOpenSesssionIInViewwFilteer实现的功能: 执行后续的的Filteer和Serrvlet/JSP时,首先打开事事务,然后提提交事务,如如果出现异常常则回滚事务务, 还解决决了JSP页页面lazyy载入数据时时发现sesssion被被关闭的问题题.注意:此Fillter必须须加在所有的的Filteer之前,包包括Struuts 2 Filteer,否则可可能出现无法法正常提交事事务的问题(已经有人遇遇到过此问题题导致无法正正常注册).try 1. 打开seessionn并开始事务务2. 向后执
44、行行ServlletChaain, 包包括后续DAAO和Acttion等 chainn.doFiilter(requeest, rresponnse);3. 提交事务务 cattch (EExcepttion ee) 4. 回滚事务务5. 显示出错错信息 finnally 6. 关闭seessionn注册到web.xml.开发用户模块BaseActtionSuupportt(可选)此类提供一些通通用的功能, 包括获取取Requeest对象,获取参数,获取属性,DAO等,这个类完完全是可选的的.属性列表:baaseDAOO 基本的DDAO对象; titlle,标题; messsage属性性;re
45、setMeessagees() 重置置titlee标题和meessagee需要注意的方法法:merggeParaamsAsUURI()/* * 将所有有URL参数数合并成一个个URL字符符串(pagge参数除外外), 提供分页时时显示.list.acction?page=3&parra1=111¶a2=bb= lisst.acttion?ppage=33¶a1=11¶22=bb&ppage=33+1 下一页 * reeturn 字符串, 如: para11=11&ppara2=bb */publicc Striing meergePaaramsAAsURI() Map
46、parrams = getRRequesst().ggetParrameteerMap();foor(Strring vvalue : vallues) SSystemm.out.prrintlnn(valuee= + valuee);oout.apppend(.UURLEnccoder.encodde(keyy, UTTF-8) + =);oout.apppend(.UURLEnccoder.encodde(vallue, UTF-88) + &);/ 删除除末尾多余的的 & 字符符if(ouut.toSStringg().enndsWitth(&) out.deletteCharrAt(o
47、uut.lenngth() - 1);/* * 获取当当前会话的登登录用户信息息 * reeturn User */publicc Userr getSSessioonLogiinedUsser() User curreentUseer = (User) getSSessioon(logiinedUsser);returrn currrentUUser;UserActtion类摘摘要设计文件上传相关的的属性: , Striing phhoto; photto是表单域域的名字.1. JDK 版本 2. JAR 包冲突 XMLL解析器 HHibernnate xxmlapiis.jarr前台:头像
48、: 如何预览头像?! (IEE浏览器比较较容易实现, 其他的没没保证, 安安全 IE66可以, IIE7和其他他浏览器可以以通过降低安安全级来实现现) llogo”img.srcc = ;Struts 2通配符方方式配置采用此配置可以以大大减少代代码量, SStrutss 1中没有有对等的内容容./messsage.jsp/useer/lisst.jsppStruts.xml 的的写法可以从从 Struuts2完整整包/appp/ strruts2-blankk-.wardelete lisst重定向到另一个个Actioonlistt(Actiion的naame)Result重
49、重定向到另一一个地址/inddex.jssp用户列表功能user/liist.acction UseerActiion.liist() /user/list.jsplist() 1. 查询记记录得到数据据集合 reesultss2. settAttriibute(属性名, ressults)3. retturn 结结果名list.jssp$ 删除 usser/deelete.actioon?id=$useer.id 修改useer/ediitUI.aactionn?id=$userr.id删除user/deelete.actioon?id=3 UUserAcction.delette() me
50、sssage.jjsp/ llist.aactionn1. finddById() - User user;2. dao.delette(useer);表单AJAX验验证功能前台写法:用户名: 后台写法:String ajaxVValidaate1. 用户名敏敏感词禁止注注册BadWorddsFiltter2. 用户名唯唯一3. Emaiil唯一4. 图片验证证码合法Action配配置:/ajaax_ressponsee.jsp/ajax_rresponnse.jssp$messaage注册/reg.jssp + /regcoode.jssp + EEasyVaalidattion regg(
51、) /messaage.jsspregcodee.jsp(可用Serrvlet代代替) 生成成验证码设置页面内容类类型为图片清空以前缓冲区区创建彩色缓冲图图获取图形(画笔笔)对象填充白色的背景景随机产生1555条干扰线,使使图象中的认认证码不易被被其它程序探探测到(可选选)绘制颜色为红色色生成随机数字验验证码并存入入sessiion, 然然后输出到图图片中设定字体绘制验证码到图图片上关闭对象, 释释放内存, 刷新到图形形对象使用ImageeIO把内存存的图片编码码到输出流, 参数依次次为: 图片片对象, 格格式(pngg,jpg), 输出流流难点(可复制粘粘贴): 2255)fc = 255;
52、if (bbc 2255)bc = 255;int rr = fcc + raandom.nextIInt(bcc - fcc);int gg = fcc + raandom.nextIInt(bcc - fcc);int bb = fcc + raandom.nextIInt(bcc - fcc);returrn new Coolor(rr, g, b);%/随机产生生155条干干扰线,使图图象中的认证证码不易被其其它程序探测测到g.setCColor(getRaandCollor(1660, 2000);for (iint i = 0; i 1155; ii+) int xx = raan
53、dom.nextIInt(1000);int yy = raandom.nextIInt(200);int xxl = rrandomm.nexttInt(112);int yyl = rrandomm.nexttInt(112);g.draawLinee(x, yy, x + xl, y + yyl);reg() 注册方法检查sessiion验证码码和表单参数数中是否一致致检查输入的验证证码用户名敏感词禁禁止注册密码MD5保存存保存注册日期设置激活状态为为falsee生成一个激活码码 actiiveCodde并存入数数据库UUID重命名文件并保保存上传的图图片到 /uuploadd获取/up
54、looad真实路路径重命名为 uuuid.扩展展名()快速复制文文件更新头像的存储储路径到实体体类发送激活邮件Striing acctiveUURL = myscmm2/useer/acttivatiion.acction?code=+ activveCodee;Striing meessagee = 您注册了了新用户, 激活码是: + aactiveeCode+ , 可点点击此地址激激活账户: + + activveURL + + ;返回注册结果页页面激活activattion() meessagee.jsp从表单参数读取取激活码根据UUID激激活码找到当当前用户from Usser whh
55、ere ttempcoode = ?检查激活状态, 如果已经经激活, 就就提示他无需需重复激活更新激活标志位位(actiive)到数数据库返回成功激活/失败信息用户登录login.jjsp loginn() messaage.jssp1. 对密码进进行MD5摘摘要计算2. 是否存在在给定用户(根据用户名名查找)检查是否激活!3. 如果用户户存在, 比比较用户名, 密码和用用户类型4. 登录成功功用户信息存存入Sesssion logginedUUser更新登录次数5. 显示登录录结果6. 根据用户户类型转向不不同的功能页页面1. 管理员员转向 /aadmin/indexx.jsp2. 其他用用
56、户转向/wwelcomme.jspp用户注销logout.jsp清空sessiion或者invaalidatte sesssion修改用户自己资资料user/eddit.jssp uupdatee() messaage.jssp如果是后台管理理, 需要根根据ID查出出用户的信息息修改的步骤:1. 从Acttion查出出用户的信息息editUI()1. finddById() - User user;2. setAAttribbute(user, useer)3. 返回到eedit.jjsp2. 显示修改改表单页面user/eddit.jssp - 根据IID修改用户户(后台), 修改自己己的就
57、不需要要.只修改了一部分分字段3. 提交到AActionn来更新数据据update()1. 数据库找找findBById() - UUser uuser; 老记录(根根据ID改才才需要)2. 先设置uuser部分分字段的新信信息, 再uupdatee()如果头像不为空空, 需要先先删掉老头像像, 再保存存新头像并更更新到数据库库3. 转向meessagee/4. 显示修改改结果(成功/失败)取回密码retrievvePasssword.htm UserrActioon.rettrivePPwd() + 发邮件件给用户 messsage.jjspEmail有效效性检查根据Emaill找到用户信信
58、息生成一个随机的的密码并MDD5摘要后更更新到数据库库发送取回密码通通知邮件 + 提示用户户去检查邮箱箱修改个人密码user/chhangePPassword.jssp UUserAcction.changgePasssword() mmessagge.jspp检查旧密码不能能为空, 新新旧密码必须须一致, 长长度限制1. 确保用户户登录2. 取出已登登录用户信息息3. 检查用户户输入的旧密密码(MD55)是否正确确4. 新密码MMD5存入数数据库5. 更新下ssessioon里面的logginedUUser对象象6. 提示更新新成功 + 用户通知邮邮件(TODDO)根据ID查看用用户信息fi
59、ndByIId() userr/viewwInfoBById.jjspfrom Usser whhere iid = ?用户信息存入 requeest的atttribuute: ssetUseer(u);转向前台页面用用EL显示开发安全过滤器器模块自底而上的控制制方式/目录/文件名名ROLE, /目录/文件件名ROLE, /目录/*四个路径变量, 四个HQQL, 四个个booleean值分别别对应HQLL的执行结果果, 有记录录就是truue四个路径变量1. 请求上下下文路径 ccontexxtPathh /myyscm22. 请求路径径 requeestPatth/mysccm2/addmi
60、n/iindex.jsp3. 资源相对对路径 resouurceUrri= requuestPaath.suubstriing(coontexttPath.lengtth() - /adminn/indeex.jspp4. 目录通配配符路径 ffolderrUri - /addmin/*取到RoleIID四个HQL资源访问检查的的顺序是(以以访问/addmin/iindex.jsp为例例):1. 检查是否存存在允许访问问/admiin/inddex.jssp的角色 条件1; trueeselect countt(*) ffrom rresourrce whhere uuri= /admiin/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年教育培训机构退款保障协议范本3篇
- 2024年度农村土地流转合同3篇
- 中小学课堂教学电子产品使用与管理的创新方案
- 2024版个人装修贷款合同模板2篇
- 2024年度人工智能产业贷款合同:AI技术研发与民间借贷结合协议3篇
- 污水管网改造提升项目规划方案
- 2024年版股权转让协议(包含股权比例和转让价格)
- 浸润式美育体验的课堂策略与实践路径分析
- 内蒙古科技大学《英美电视剧欣赏》2023-2024学年第一学期期末试卷
- 内蒙古科技大学《VehicleDynamicsandDataEngineering》2023-2024学年第一学期期末试卷
- 《西游记知识竞赛》题库及答案(单选题100道、多选题100道)
- 民办学校教职工入职背景审查制度
- 2024年新人教版四年级数学上册《教材练习21练习二十一(附答案)》教学课件
- 2024年湛江市农业发展集团有限公司招聘笔试冲刺题(带答案解析)
- 商业伦理与社会责任智慧树知到期末考试答案2024年
- MOOC 创新思维与创业实验-东南大学 中国大学慕课答案
- 二级公立医院绩效考核三级手术目录(2020版)
- 6人小品《没有学习的人不伤心》台词完整版
- GB/T 16865-1997变形铝、镁及其合金加工制品拉伸试验用试样
- 业务费用管理办法
- 马克思的平均利润理论对我国发展市场经济有何启示
评论
0/150
提交评论