实验一 基于Struts2的登录系统实例
通过使用MyEclipse10来开发简单的登录系统,从而掌握如何使用它们开发基于Struts2的Web项目。
该项目为登录系统,项目有一个登录页面(login.jsp),登录页面对应的业务逻辑组件是LoginBean类,对应的业务控制器LoginAction类,如果登录成功(用户名、密码正确)跳转到success.jsp页面,如果登录失败(用户名、密码不正确)则重新回到登录页面(login.jsp)。此外还需要配置web.xml,配置struts.xml。
1.在web.xml中配置核心控制器FilterDispatcher
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.编写视图组件(JSP页面)
登录页面(login.jsp)
<body>
<form method="post" action="login">
用户名:<input name="userName" type="text" size="24"> <br>
密 码:<input name="password" type="password" size="26"> <br>
<input type="submit" value="登录">
</form>
<hr>
</body>
登录成功页面(success.jsp)
<body>
<h1>你登录成功,欢迎你!</h1>
</body>
3.编写登录页面对应的业务逻辑组件JavaBean
public boolean login(String userName,String passWord){
boolean b=false;
if(userName.equals("QQ")&&passWord.equals("123")){
b=true;
return b;
}else{
b=false;
return b;
} }
4.编写业务控制器Action
为了处理视图的业务逻辑,一般每个视图都会对应一个业务控制器Action。登录页面(login.jsp)对应的业务控制器(LoginAction.java)
public String execute() throws Exception{
LoginBean lb=new LoginBean();
if(lb.login(userName, passWord)){
return "success";
}else{
return "error";
} }
5.在struts.xml中配置Action
业务控制器LoginAction需要在struts.xml中配置,只有这样核心控制器才能找到该业务控制器。另外,核心控制器根据业务控制器返回的值以及在struts.xml中的配置决定下一步跳转到哪个页面上去。
<struts>
<include file="example.xml"/>
<package name="zzf" extends="struts-default">
<action name="login" class="ch01Action.LoginAction">
<result name="error">/login/login.jsp</result>
<result name="success">/login/success.jsp</result>
</action>
</package>
</struts>
6.项目部署和运行
实验二 基于Struts2的个人信息管理系统
能够熟练运用Struts2的框架知识开发Java Web项目。
系统基于B/S设计,可以发布到网上,用户可以随时存取个人信息,可以在系统中任意添加、修改、删除个人数据,包括个人的基本信息、个人通讯录、日程安排、个人文件管理。
1、项目需求说明
要实现的功能包括四个方面:
(1)登录与注册
系统的登录和注册功能。
(2)个人基本信息管理模块
系统中对个人基本信息的管理包括:个人的姓名、性别、出生日期、民族、学历、职称、登录名、密码、电话、家庭住址等。
(2)用户个人通讯录模块
系统的个人通讯录是保存了个人的通讯录信息,包括自己联系人的姓名、电话、邮箱、工作单位、地址、QQ等。可以自由添加联系人的信息,查询或删除联系人。
(3)日程安排模块
日程模块记录自己的活动安排或者其它有关事项,如添加从某一时间到另一时间要做什么事,日程标题、内容、开始时间、结束时间。可以自由查询,修改,删除。
(4)个人文件管理模块
该模块实现用户在网上存储临时文件的功能。用户可以新建文件夹,修改、删除、移动文件夹;上传文件、修改文件名、下载文件、删除文件、移动文件等。
项目系统分析
2、系统功能描述:
(1)用户登录与注册
个人通过用户名和密码登录系统;注册信息包含自己的个人信息。
(2)查看个人信息
主页面显示个人基本信息:登录名、用户密码、用户姓名、用户性别、出生日期、用户民族、用户学历、用户职称、用户电话、用户住址、用户邮箱等。
(3)修改个人信息
用户可以修改自己的基本信息。如果修改了登录名,下次登录时应使用新的登录名。
(4)修改登录密码
用户可以修改登录密码。
(5)查看通讯录
用户可以浏览通讯录列表,按照姓名检索等。
(6)维护通讯录
用户可以增加、修改、删除联系人。
(7)查看日程安排
用户可以查看日程安排列表,可以查看某一日程的内容时间等。
(9)维护日程
一个新的日程安排包括:日程标题、内容。用户可以对日程进行添加、修改、删除等操作。
(10)浏览下载文件
用户可以任意浏览文件、文件夹,并可以下载到本地。
(11)维护文件
用户可以新建文件夹,修改、删除、移动文件夹,移动文件到文件夹,修改文件名、上传文件、下载文件、删除文件等操作。
3、系统模块结构如图所示
4、项目数据库设计
本实训在数据库中可建立如下表,用于存放相关信息。
1) 用户表(user),用于管理index.jsp页面中用户登录的信息以及用户注册(register.jsp)的信息。
2) 通讯录管理表(friends),用于管理通讯录,即管理联系人(好友)。
备注:表friends中的用户登录名字段userName用于关联用户的好友信息列表。
3) 日程安排管理表(date),用于管理用户的日程安排。
备注:表date中的用户登录名字段userName用于关联用户的日程信息。
4) 个人文件管理表(file),用于管理个人文件管理。
备注:表file中的用户登录名字段userName用于关联用户的文件管理信息。
5、项目实现(代码见程序)
实验三 基于Struts2+Hibernate5的登录和注册系统
使用Struts2和Hibernate5开发一个实现登录和注册功能的项目
本项目实现用户登录和用户注册功能。有一个登录页面(login.jsp),登录页面对应的业务控制器为LoginAction,该Action中覆盖了validate()方法,使用手工验证对登录页面进行验证,如果输入的用户名和密码正确,进入登录成功页面(success.jsp),如果用户没有注册需先注册,该注册页面对应的业务控制器为RegisterAction,注册成功后返回登录页面。还需要配置web.xml,在struts.xml中配置Action。
在基于Struts2+Hibernate的项目开发中,连接数据库时需要Hibernate的配置文件hibernate.cfg.xml或者hibernate.properties,本项目使用的是hibernate.cfg.xml,配置文件主要用于加载数据库的驱动以及与数据库建立连接等,该配置文件一般与struts.xml文件放在同一位置,该配置文件在项目运行时需要加载,本项目编写一个加载该配置文件的类HibernateSessionFactory,该类封装了配置文件的加载方法,即加载配置文件的JavaBean。
另外,在使用Hibernate时,项目所用数据库中的每一张表都对应一个持久化对象PO。通过PO对象把页面中的数据保存起来并把数据存到数据库中。为了简化开发,本项目的登录页面和注册页面都使用同一张表,登录页面和注册页面中的数据都保存在同一个PO对象UserInfoPO中。每个PO对象一般都会对应一个映射文件UserInfoPO.hbm.xml,映射文件配置PO对象与数据库中表之间的映射关系;映射文件一般都放在和其对应的PO对象所在包中。为了封装登录和注册功能对数据的操作,即登录和注册页面要实现的业务逻辑,本项目编写一个名为LoginRegisterInfo的JavaBean,该类提供了登录和注册业务处理,可以实现登录和注册的持久化业务操作。
1、编写登录页面(login.jsp)登录成功页面(success.jsp)
2、编写注册页面(register.jsp)
3、编写业务控制器Action
登录页面对应的业务控制器是LoginAction.java
注册页面对应的业务控制器(RegisterAction.java)
4、修改struts.xml配置Action
5、Hibernate的配置文件
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<mapping resource="PO/UserInfoPO.hbm.xml"/>
</session-factory>
</hibernate-configuration>
6.加载Hibernate配置文件的类
加载Hibernate.cfg.xml文件的类为HibernateSessionFactory
7.PO对象以及对应的映射文件
PO对象的类为UserInfoPO,PO对应的映射文件(UserInfoPO.hbm.xml)
<hibernate-mapping>
<class name="PO.UserInfoPO" table="info" catalog="test">
<id name="id" type="int">
<column name="id"/>
<generator class="assigned"/>
</id>
<property name="userName" type="string">
<column name="userName" length="30" not-null="true"/>
</property>
<property name="password" type="string">
<column name="password" length="30" not-null="true"/>
</property>
</class>
</hibernate-mapping>
8.封装对数据操作的类
将登录和注册业务功能封装到类LoginRegisterInfo(JavaBean)中。
9.项目部署和运行
实验四 基于Struts2+Hibernate的教务管理系统
通过我们熟悉的教务管理系统开发来综合训练Struts2和Hibernate框架技术的整合应用,并进一步提高项目实践能力。
项目实现的功能包括学生管理部分、教师管理部分和管理员管理部分。管理员管理部分实现对学生、教师以及课程的管理。
学生管理部分的功能主要包括:学生学籍管理、必修课成绩查询、修改个人信息和密码、选课功能(选修课选课)、查询选修成绩,并提供QQ留言和校园论坛等功能。
教师管理部分的功能主要包括:教师基本信息管理、修改个人信息和密码、查询必修课课程信息、成绩录入、查询选修课程以及QQ留言和校园论坛等。
管理员管理部分的功能主要包括:学生管理、教师管理、课程管理和修改密码等。
1、项目系统分析
1)学生功能模块实现的功能主要包括:
(1)学生学籍管理:学生学籍基本信息包括:学号、姓名、籍贯、电话、电子邮件、学分、学院、性别以及上传照片等。
(2)成绩查询:查询必修课中的考试课程及考试分数。
(3)修改个人信息:修改学生学籍信息。
(4)修改秘密:修改个人密码。
(5)进入选课:选择计划修习的选修课程。
(6)已选课程:查询已选的选修课程。
(7)选课成绩:查询选修课程名称及考试成绩。
(8)其它服务:提供QQ留言和校园论坛(BBS)功能。可以通过QQ给管理员或者教师留言,也可以访问学校BBS论坛,在论坛中与同学、教师和管理员进行交流。
2)教师功能模块实现的功能主要包括:
(1)教师基本信息管理:包括教师姓名、性别、年龄、职称、所在学院等。
(2)修改个人信息:修改教师个人基本信息和密码。
(3)查询课程:查询必修课程、上课时间、上课地点以及开课专业、选修学生信息等。
(4)成绩录入:录入必修课程考试成绩。
(5)选修课信息:查询选修课程信息以及如入成绩。
(6)其它服务:QQ留言,回复留言,访问学校BBS论坛,在论坛中与学生、教师和管理员进行交流。
3)管理员功能模块实现的功能主要包括:
(1)学生管理:包括查看所有学生信息、添加学生信息、导入学生信息(以Excel表格形式将批量学生信息导入数据库中)。
(2)教师管理:包括查看所有教师信息、添加教师信息、导入教师信息(以Excel表格形式将批量教师信息导入数据库中)。
(3)课程管理:包括查看所有课程信息、添加课程信息、导入课程信息(以Excel表格形式将批量课程信息导入数据库中)。
(4)修改密码:修改管理员密码
2、设计系统功能模块结构图
3、数据库设计
项目中用到数据库(lqmsql)和表(admin、classes、score、student、student_classes、teacher)。
管理员表(admin)用于管理管理员账号和密码。
课程表(classes)用于管理课程的信息
学生表(student)用于保存学生有关的信息
学生选课表(student_classes)保存学生成绩、学生标识和课程号,即是把学生成绩与学生表和课程表关联起来的一个中间表。
4、项目实现(代码见程序)
实验五 基于Struts2+Hibernate+Spring3的登录系统
使用Struts2、Hibernate和Spring3开发一个实现登录功能的项目。
在WEB-INF文件夹下新建一个lib文件夹,该文件中保存了Hibernate所需的JAR文件、Spring所需的JAR文件、MySQL的JDBC驱动。在库中加载JAR文件时可以直接从该文件夹中加载这些JAR文件到项目库中;另外,在WEB-INF文件夹下还有一个applicationContext.xml文件,这是因为在web.xml中配置的有加载该文件的参数,便于将来加载该配置文件。
系统有一个登录页面(login.jsp),登录页面对应的业务控制器类为LoginServiceAction(在包com.struts.action中),如果登录成功跳转到登录成功页面(success.jsp),在包com.dao中有一个接口(UserDao.java),该接口定义了登录功能的常用操作,该接口的实现类(UserDaoImpl.java)在包com.dao.impl中,PO对象类(User.java)在包com.entity中,该PO对象对应的映射文件也在包com.entity中,名为User.hbm.xml, Action需要在struts.xml中配置。
1、在web.xml中配置Struts2和Spring3
2、编写视图组件(JSP页面)
登录页面(login.jsp)
登录成功页面(success.jsp)
3、编写Action和JavaBean
登录页面对应的业务控制器类(LoginServiceAction.java)
登录功能的接口(UserDao.java)
实现登录功能类(UserDaoImpl.java)
PO对象(User.java)
PO对象对应的映射文件(User.hbm.xml)
4、编写Struts2、Spring3和Hibernate的配置文件
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
<property name="maxPoolSize" value="40"/>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="20"/>
</bean>
<!-- 定义了Hibernate的SessionFactory-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"> <ref bean="dataSource" /> </property>
<property name="mappingResources">
<list>
<value>com/entity/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
<!-- HibernateTemplate类是简化Hibernate数据访问代码的辅助类,可以获取一个Session对象。-->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory"> <ref bean="sessionFactory"/> </property>
<property name="allowCreate"> <value>true</value> </property>
</bean>
<!-- 依赖注入-->
<bean id="userDao" class="com.dao.impl.UserDaoImpl" >
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
5、项目部署和运行
实验六 基于Struts2+Hibernate+Spring3的BBS系统
系统开发的目的主要是为学生提供一个用于技术交流、生活娱乐的BBS。
BBS系统功能包含了
(1)普通(游客)用户功能,只能查看BBS系统的论坛,不能发帖和留言。
(2)会员用户,包括会员登录功能、网站搜索帖子功能、我的帖子功能、修改个人信息功能、修改密码功能、发帖和回帖功能。用户登录后可以在各个板块发帖和回帖。
(3)管理员,包括登录功能、我的帖子功能、修改个人信息功能、帖子管理功能、板块管理功能。
1、项目系统分析
1)普通(游客)用户:只能查看BBS系统的论坛,不能发帖和留言。
2)会员用户
(1)会员登录功能:只有登录后方可实施修改个人信息、上传个人头像、修改密码、发帖、查看自己所有发帖、回复别人帖子等操作。
(2)网站搜索帖子功能:可以通过搜索功能查找BBS中的帖子。
(3)我的帖子功能:可以查看用户本人发过的所有帖子。
(4)修改个人信息功能:可以修改用户的昵称、QQ号码、邮箱以及上传头像。
(5)修改密码功能:可以修改用户的登录密码。
(6)发帖和回帖功能:用户登录后可以在各个板块发帖和回帖。
3)管理员
(1)登录功能:管理员登录后可以实现发布管理员贴子、管理员个人信息修改、对帖子进行管理、板块管理等功能。
(2)我的帖子功能:可以发布管理员帖子。
(3)修改个人信息功能:可以修改管理员的昵称、QQ号码、邮箱以及上传头像。
(4)帖子管理功能:可以修改帖子和删除帖子。
(5)板块管理功能:可以增加各级板块功能。
2、绘制系统功能模块结构图
3、项目的数据库设计
本项目使用的数据库是MySQL。项目中用到的数据库(bbs)和表(admin、board、post、reply、student)
管理员表(admin)用于保存管理员的信息
板块表(board)用于保存板块的信息
帖子表(post)用于保存帖子的信息
回帖表(reply)用于保存回复帖子的信息
会员表(student)用于保存会员的信息
4、项目实现
该项目命名为“BBS”,在项目“Web页”文件夹中创建一个页面(redirect.jsp),运行该文件后将请求提交到业务控制器IndexAction中,用于加载并初始化BBS页面,然后把页面跳转到BBS论坛主页面(index.jsp)