Java Web应用开发项目教程-第十章后台用户管理模块_第1页
Java Web应用开发项目教程-第十章后台用户管理模块_第2页
Java Web应用开发项目教程-第十章后台用户管理模块_第3页
Java Web应用开发项目教程-第十章后台用户管理模块_第4页
Java Web应用开发项目教程-第十章后台用户管理模块_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章后台用户管理模块本章要点:后台管理总体规划管理员登录、查询、添加与删除功能模块设计与实现管理员密码修改功能模块设计与实现会员查询功能模块设计与实现会员删除功能模块设计与实现Struts2的拦截器Action接口和ActionSupport类Struts2异常处理Struts2标签库第10章后台用户管理模块功能分析:E-Store后台主要由用户管理、商品信息管理、商城信息管理三大模块用户管理:管理员和会员第10章后台用户管理模块用户权限分析:会员普通管理员超级管理员第10章后台用户管理模块本章功能模块:管理员登录管理员增、删、改、查会员查询、删除10.1

E-Store后台总体规划总体规划:相关文件的位置描述如下:

(1)JSP存放在WebRoot/pages/admin。

(2)实体类存放在com.estore.struts.entity。

(3)Action类存放在com.estore.struts.action。

(4)数据操作类存放在com.estore.struts.dao。10.2管理员登录设计与实现功能说明:与E-Store电子商城的前台不同,前台的未登录用户可以浏览和查询商品,后台管理员只有登录后才能进行所有相关操作,后台登录页面:10.2管理员登录设计与实现普通管理员登录界面超级管理员登录界面10.2管理员登录设计与实现流程分析与设计:设计数据库字段名数据类型是否为空是否主键默认值描述idint(4)NoYesID(自动编号)accountvarchar(50)Yes管理员名称passwordvarchar(50)Yes登录密码real_namevarchar(50)Yes真实姓名signbit(1)No类型标识10.2管理员登录设计与实现流程分析与设计:设计数据库3)在数据库中创建表数据库中创建tb_manager 数据表如图所示:10.2管理员登录设计与实现功能流程图:10.2管理员登录设计与实现开发流程:

(1)创建userLogin.jsp,提供用户登录的信息,访问form表单里指定的action,并将用户名和密码封装在manager对象中。

(2)根据struts.xml文件中的配置调用clsss类即ManagerAction.java类中method方法login()。

(3)login()方法中,以用户名和密码为参数调用ManagerDao类的selectOne()方法,查询数据库表。10.2管理员登录设计与实现开发流程:(4)查询结果为空,对result进行赋值”用户不存在”,查询结构不为空对result不操作,将result参数传到landResult.jsp页面。

(5)验证result是否为空。若不为空,则登录失败,页面提示重新登录,系统页面返回到登录页面。

(6)result为空字符串,则登录成功,页面跳转至前台商品展示页面,同时将用户信息保存在会话中,以供该管理员本次在网站访问时使用。10.2管理员登录设计与实现前提:为工程引入Struts支持:在Package

Explorer选中当前工程,选择菜单Myeclipse→ProjectCapabilities→Add

Struts

Capabilities如图,这样Struts类库就被导入到当前Web应用中,本例中使用的Struts版本为Struts2.1。10.2管理员登录设计与实现(1)创建后台登录页面userLogin.jspuserLogin.jsp与前台登录页面很相似,都需要包括一个FORM提交表单,但是Struts中的表单不是提交给某个JSP,而是提交给所谓的控制器来验证。<form

name="form"

method="post"action="<%=path%>/manager/login

"onSubmit="return

checkEmpty()">

可以看到提交的对象是managerAction,为了验证用户输入时是否合法,还需要使用JavaScript脚本进行验证。上一章已经详细述及,本页面创建略过。10.2管理员登录设计与实现■(2)准备struts.xml文件中的配置,准备clsss类即ManagerAction.java类中method方法login()。Struts.xml在ManagerAction.java类中添加login方法10.2管理员登录设计与实现■(3)login()方法中,以用户名和密码为参数调用ManagerDao类的selectOne()方法,查询数据库表。分成两步来完成创建ManagerDao类和ManagerEntity类在Dao中添加的selectOne()方法,完成查询逻辑10.2管理员登录设计与实现DAO类ManagerDAO.java:ManagerDAO.java封装了与管理员有关的数据库操作。验证后台管理员登录时需要使用方法selectOne()获得管理员对象。public

ManagerEntity

selectOne(String

account) 该方法以管理员名称为参数查询数据库获得管理员对象ManagerEntity。在登录验证中,如查询到该管理员则表示该管理员已经存在,再对密码做下一步验证。10.2管理员登录设计与实现创建组件类ManagerEntityjava1)在工程下创建包com.mycompany.struts.entity2)参照创建普通类的方法,在上述按右键,选择new→Class,打开类

创建页面,如图所示,创建类ManagerEntity.java,并为其增加属性account,id,real_name,password,sign,并使用工具自动

生成get/set方法。10.2管理员登录设计与实现创建组件类ManagerEntityjava类中定义的属性分别与数据库中的字段一一对应。其中

ID为标识,sign为管理员属性标识,1标识超级管理员,0标识普通管理员,默认情况下定义sign为0。10.2管理员登录设计与实现■(2)准备struts.xml文件中的配置,准备clsss类即ManagerAction.java类中method方法login()。Struts.xml在ManagerAction.java类中添加login方法10.2管理员登录设计与实现■(4)查询结果为空,对result进行赋值”用户不存在”,查询结构不为空对result不操作,将result参数传到landResult.jsp页面。10.2管理员登录设计与实现■(5)验证result是否为空。若不为空,则登录失败,页面提示重新登录,系统页面返回到登录页面。(6)result为空字符串,则登录成功,页面跳转至前台商品展示页面,同时将用户信息保存在会话中,以供该管理员本次在网站访问时使用10.2管理员登录设计与实现配置文件修改1)web.xml<filter><filter-name>struts2</filter-name><filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter>对该Servlet的访问路径为<servlet-mapping><servlet-name>struts2</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>类似*.action的访问都将被ActionServlet处理,称ActionServlet为中央控制器的原因。10.2管理员登录设计与实现配置文件修改

2)struts.xmlStruts应用struts.xml用来配置和连接Struts应用中各个组件。10.2管理员登录设计与实现■后台主页面main.jsp的设计可以参照前台同名页面来实现。后台main.jsp中将包含三个JSP文件,分别为: top.jsp,left.jsp,statusBarNavigation.jsp这几个JSP文件中包含的都是静态页面,完成方法完全类同于前台。10.2管理员登录设计与实现管理员查询功能功能说明管理员分普通管理员和超级管理员,只有超级管理员才有管理管理员的权限,登录后在left.jsp中有“后台管理员”链接单击该链接将出现管理员查询结果页面。10.3管理员查询设计与实现■功能实现流程设计

(1)在main.jsp页面(包含left.jsp)中单击超级链接“台管理员”。(2)修改配置文件struts.xml,增加selectManager配置项。(3)为ManageAction中增加处理方法selectManager。

(4)为ManagerDao增加selectManager方法,该方法查询所有的管理员信息并将结果保存在managerList对象中。(5)创建managerSelect.jsp页面。流程图10.3管理员查询设计与实现10.3管理员查询设计与实现■编程详解●修改ManagerDao.java为ManagerDao增加方法selectManager,该方法查询所有的管理员信息,返回管理员列表。核心实现代码如下:10.3管理员查询设计与实现■编程详解●修改ManagerAction.java10.3管理员查询设计与实现■编程详解●修改ManagerAction.javaselectManager()方法将查询的管理员信息保存在

managerList列表对象中,并将此managerList对象作为

request对象的一个属性。为了实现“分页”功能还需要保存另外3个属性,number表示当前是第几页,初始化为第

“0”页,maxPage为计算总页数,pageNumber为总记录

数,规定每页显示“6”条记录。将number,pageNumber,maxPage保存在request的相应属性中。10.3管理员查询设计与实现■编程详解●创建managerSelect.jsp在managerSelect.jsp中分页显示管理员信息,首先利用request对象获得传递的数据随后对信息分页,分页方法同前台main.jsp10.3管理员查询设计与实现■编程详解●修改配置文件struts.xml10.3管理员查询设计与实现■Struts2的拦截器

1.Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现。

2.拦截器栈:Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,

Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。10.3管理员查询设计与实现■Struts2的拦截器原理

当请求action时,Struts会查找配置文件,并根据其配置实例化相对的拦截器对象,然后形成一个列表,最后一个一个地调用列表中的拦截器10.3管理员查询设计与实现■拦截器接口(Interceptor)

(1)destroy()方法:执行完成之后释放init()方法里面打开的资源。

(2)init()方法:由拦截器在执行之前调用,用于初始化系统资源。

(3)interceptor方法:该方法是拦截器的核心方法,实现具体的拦截操作,返回一个字符串作为逻辑视图。10.3管理员查询设计与实现■抽象拦截器(AbstractInterceptor)AbstractInterceptor是Struts2提供的拦截器接口对应的抽象类,该类对init()方法和destroy()方法提供了空实现,这样在开发自定义拦截器时只需实现interceptor

抽象方法即可。10.4管理员添加设计与实现管理员添加功能说明

超级管理员可以为系统添加新的管理员用户,添加的管理员为普通管理员。添加管理员时需要注册“用户名”、“密码”、“姓名”等字段,添加管理员页面如图10.15所示。

添加成功后跳转至管理员查询页面,可以看到查询页面已经显示刚添加的管理员信息10.4管理员添加设计与实现流程分析与设计功能实现流程设计

(1)创建managerInsert.jsp,提供Form表单提交添加管理员所需的数据。(2)为ManagerAction添加managerInsert方法。

(3)为ManagerDao添加insertManager方法,insertManager方法完成数据添加功能。(4)修改配置文件struts.xml10.4管理员添加设计与实现流程分析与设计管理员添加功能流程图10.4管理员添加设计与实现编程详解

1、创建视图

managerInsert.jsp–完成表单验证方法checkEmpty(form)–当用户提交的数据非空时,提交至对应的Action,供处理10.4管理员添加设计与实现修改ManagerAction添加方法managerInsert。 –获得包含用户提交数据的ManagerEntity;–ManagerDAO.selectOne方法,确定上述用户的存在状态,从而完成相应的逻辑10.4管理员添加设计与实现修改struts.xml在manager命名空间中,增加insertManager的配置项:10.4管理员添加设计与实现Action组件Struts框架中的Action组件类作为业务调度控制器而完成实际的业务功能请求的控制和管理,并根据请求的类型而实际调用特定的业务功能组件以完成最终的处理。开发者在一般的应用开发状况下,只需要对Struts框架的标准Action组件类进行继承和扩展,并重写其中的execute()方法,然后在

struts.xml配置文件中加以配置定义10.4管理员添加设计与实现为什么要使用Action使用Action的目的是为了将Web应用系统中的表示层和模型层分开。基于MVC系统架构模式的设计思想,需要在表示层和业务逻辑层之间增加一个关联的控制层,而在Struts框架的系统架构设计中是通过提供Action组件类来承担这样的职责。另外Action组件类实现业务模块的调度,加载对应的表示层

JSP页面以完成对用户请求的实际处理。10.4管理员添加设计与实现如何实现自己的业务控制器由于Struts框架中从总体应用方面是采用继承的方式实现对应用系统的功能扩展,因此所有用户自己的业务控制器

Action处理器组件类都必须从Struts框架的API中的

org.apache.struts.action.ActionSupport类进行派生,并在子类中重写基类的execute()方法。Action组件类的核心职责为:访问业务层组件并为表现层目标组件准备结果数据对象,并通过RequestDispatcher转发到目标页面进行显示输出,同时也处理其中出现的各种异常和错误10.4管理员添加设计与实现■Action接口与ActionSupport类

在实际的开发中,需要对开发的Action组件进行规范,统一编程接口,在这种情况下可以使用Struts2提供的Action接口,该接口定义了Struts2中Action应该遵循的规范,该接口(Action.java)的定义了5个学量字符串,作为控制器execute方法的返回值,代码如下:10.4管理员添加设计与实现■Action接口的默认抽象类ActionSupport上述类提供了包括数据验证、获取国际化信息等默认方法。因此用户编写业务控制器类继承了ActionSupport类,将会大大简化业务控制器类的开发。在struts.xml中配置Action时,如果没有指定该Action的class属性,系统将自动使用ActionSupport作为业务控制器。10.4管理员添加设计与实现Action组件类的编程原则Action组件类更多的是承担“控制和协调”的职责。因此,不要在Action组件类中写太多的业务功能实现的代码,而具体的业务功能实现则应该是通过调用相应的JavaBean组件或者EJB等业务功能组件来完成对业务功能的处理10.4管理员添加设计与实现Action组件的一般编程模式获得业务请求参数,进行表单数据的逻辑检查执行必要的业务逻辑的前期处理,比如存取数据库、参数和环境的初始化调用业务JavaBean或者EJB

Bean组件等,但不应该自己完成具体的业务功能实现业务处理后的状态结果实现10.5管理员删除设计与实现管理员删除功能说明

超级管理员具有删除普通管理员的权限。在管理员信息的查询页面中可以通过单击“删除”链接完成删除某个管理员操作10.5管理员删除设计与实现流程分析与设计功能实现流程设计(1)在managerSelect.jsp页面中增加“删除”链接(2)为ManagerDao添加deleteManager方法,完成数据删除功能。(3)为ManagerAction添加deleteManager方法(4)修改配置文件struts.xml10.5管理员删除设计与实现流程分析与设计管理员删除功能流程图10.5管理员删除设计与实现编程详解1、managerSelect.jsp页面中增加“删除”链接10.5管理员删除设计与实现修改ManagerDao2、为ManagerDao添加deleteManager方法,完成数据删除功能。10.5管理员删除设计与实现修改ManagerAction3、为ManagerAction添加方法deleteManager10.5管理员删除设计与实现修改struts.xml4、在manager命名空间中,增加deleteManager的配置项:10.6管理员密码修改与实现功能说明

已登录管理员可以修改自己的密码,修改密码之前必须正确输入旧密码。密码修改成功后,返回到登录页面,并能使用新密码登陆。10.6管理员密码修改与实现流程分析与设计管理员密码修改功能流程图10.6管理员密码修改与实现编程详解

(1)创建JSP页面managerUpdatePassword.jsp,修改密码时需要输入原密码、新密码、再次输入新密码以确认。(2)为ManagerAction.java增加方法updatePassword。(3)为ManagerDAO.java增加updateManagerPassword方法,完成密码修改,密码修改成功后页面跳转至后台登录页面userLogin.jsp,要求管理员重新登录,并在此页面显示“密码修改成功”提示窗口。10.6管理员密码修改与实现编程详解

1、创建视图

managerUpdatePassword.jsp通过session对象获取在线用户信息完成数据输入的验证,以减轻后期控制器复杂度10.6管理员密码修改与实现修改ManagerAction2、添加方法updatePassword–只须调用ManagerDAO.java的updateManagerPassword方法就可以实现密码修改10.6管理员密码修改与实现■修改ManagerDao.java类3、添加方法updateManagerPassword–以ManagerEntity为参数,将实现管理员密码的修改功能10.6管理员密码修改与实现修改struts.xml在manager命名空间中,增加updateManagerPassword的配置项:10.6管理员密码修改与实现Struts2标签库(这一节待完善或直接删除)●Struts2标签库是????Struts2标签库作用?Struts2标签库分类?Struts2标签库的使用?10.6管理员密码修改与实现Struts

HTML标签 Struts

HTML标签可以和标准的HTML标签完成相同的功能,在Struts应用中提倡使用Struts

HTML标签这是因为这些标签可以和Struts框架的其他组件紧密结合在一起,例如,<html:form>标签用来定义HTML表单,Struts框架能够把这个表单中的数据自动映射到相应的ActionForm组件中。Struts

HTML标签大致分为以下几类:用于生成基本的HTML元素的标签用于生成HTML表单的标签显示错误或正常消息的标签10.6管理员密码修改与实现用于生成基本的HTML元素的标签 Struts

HTML标签库中的许多标签的哦和基本的HTML元素对应,这些标签包括:<html:html>:生成HTML<html>元素<html:base>:生成HTML<base>元素<html:link>:生成HTML

Anchorage<a>元素<html:rewrite>:生成用户请求的URL<html:img>:生成HTML<img>元素10.6管理员密码修改与实现用于生成基本的HTML元素的标签

1)<html:html>标签<html:html>标签用于在网页的开头生成HTML的<html>元素。10.6管理员密码修改与实现用于生成基本的HTML元素的标签

2)<html:base>标签<html:base>标签在网页<head>部分生成HTML<base>元素。HTML<base>元素用于生成当前网页的绝对URL路径。10.6管理员密码修改与实现用于生成基本的HTML元素的标签

3)<html:link><html:link>标签用于生成HTML<a>元素。10.6管理员密码修改与实现用于生成基本的HTML元素的标签4)<html:rewrite>用于输出超链接中的URI部分,但它并不生成HTML<a>元素。URI指的是URL中的协议、主机和端口以后的内容。URI用于指定具体的请求资源。例如,对于URL:http://localhost:8080/htmltaglibs/HtmlBasic.do10.6管理员密码修改与实现用于生成基本的HTML元素的标签

5)<html:img>标签<html:img>标签用于在HTML页中嵌入图片,此外它还允许包含请求变量,以便动态控制图片的输出。10.6管理员密码修改与实现基本的表单标签Struts

HTML标签库提供了一组生成HTML表单的标签<html:form>:生成HTML<form>元素<html:text>:生成HTML<in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论