您的位置:首页 > Web前端 > JavaScript

J2EE初级学习项目——jsp+jdbc+servlet+MVC开发模式实现的小项目

2018-01-25 16:11 543 查看
首先,先介绍一下本项目的需求和具体要实现的功能和方法一览:

1.用户注册:输入设置的用户名、密码、确认密码后,将表单提交到Servlet层去,Servlet层获取用户名、密码,在控注册的Servlet层的UserRegister.java中创建一个register方法(用来判断是否能将注册信息保存成功),主要实现doPost方法和register方法。

实现步骤:View层—>先把用户输入的信息保存为Javabean对象,然后先进行注册的用户名和密码验证,Servlet先判断是否合法—>doPost调用register方法判断用户名是否可用register{含Service层的save【含Dao层的save(save内调用Dao层的check方法)】}—>返回View层

Javabean对象:

先创建User实体类,并重写构造方法,使可以在本方法中直接调用userName和userPassword参数。

Dao层:

save(User user):用户注册,并将信息录入数据库(易于实现)

check(User user):用户名和密码的验证,在用户进行登录log方法的时候验证(已注册),验证是否输入正确。

check(String userName):在save方法中调用。(未注册)判断数据库中是否已经有本用户名,有则显示“用户名被使用“,无则跳入下级判断。

Service层:

save(User user):对Dao层的数据进行封装,进一步实现注册功能。

Servlet层:

register(String userName,String userPassword):register方法中先将用户的注册信息传递给Javabean去封装对象,然后通过调用Service层的save方法保存对象,返回boolean类型。

doPost(HttpServletRequest req,HttpServletResponse resp):调用register方法,获取表单的参数然后判断用户名和密码是否合法、密码和确认密码是否一致。

①合法且一致,看能否保存,能则证明成功,返回成功提示信息和成功页面跳转(请求转发);否则则用户名 重复,返回失败提示信息并且跳转到失败界面。

②不合法或者不一致,返回失败信息和跳转失败界面。

View层:
执行操作和返回信息展示。

2.用户登录:

实现步骤:View层—>把输入的登录信息传递给UserLogin的Servlet层—>先将登录信息用Javabean进行对象封装—>doPost调用login方法进行用户名和密码的验证,同时验证用户们是否与管理员用户名一致,一致则进入管理员界面—>Servlet层的login方法{Service层的log方法【UserDao层的check方法(LogDao层的save方法)】}—>返回View层

Javabean层:

先创建User实体类,并重写构造方法,使可以在方法中直接调用userName和userPassword。

Dao层:

LogDao层:

save(Log log):将“用户登录”和登录日期的日志信息保存入数据库

UserDao层:

check(User user):先查找数据库中是否有这个userName,然后在进行密码和用户们的验证。

Service层:

log(User user):检验用户的用户名和密码,并且在数据库中传入日志信息。

Servlet层:

doPost(HttpServletRequest req,HttpServletResponse resp):检验是否为管理员并且用户名和密码的正确性。如果为管理员登录:获取用户名们的留言信息并且将用户名和留言信息存入session中

3.访客留言:

实现步骤:View层—>Javabean创建对象并且进行封装—>Dao层实现对数据的业务逻辑处理(save,getMessage,remove)—>Service层再对Dao层的数据处理进行进一步封装,save方法调用Dao层的save,getMessage方法调用Dao层的getMessage方法,removeMessage方法调用Dao层remove方法,提供给Servlet层调用—>Servlet层saveMessage方法调用Service层的save方法

Javabean对象:

创建Message实体类,并且重写构造方法,使可以在方法中直接调用contact和message。

Dao层:

save(Message message):将留言信息存入数据库

getMessageList():读取所有访客留言并封装成List

remove(int messageId):根据留言的ID删除留言

Service层:

save(Message message):插入客户留言和相应的日志信息,调用Dao层的save方法,进行进一步封装

getMessageList():调用Dao层的getMessageList方法,进行封装

removeMessage(int messageId):删除留言和插入相对应的日志信息,调用Dao层的remove方法

View层:

将获取的QQ号和留言信息传入Javabean对象

Servlet层:

doPost(HttpServletRequest req,HttpServletResponse resp):获取View层传入的参数,并且验证留言和联系方式是否合法,然后进行留言的保存

saveMessage(String contact,String message):调用Service层的save方法。

4.新闻发布:(主要是管理员的行为)

基本步骤与上面相似,就不作拓展。

这里多了个管理员控制的新闻展示功能:

Servlet层:

NewsDisplay.java—>checkServletContext()检查在application中是否有记录,没有的话就把所有新闻集合注入application中(这里相当于每添加一篇文章就遍历一次数据库再重新显示新闻列表,介于目前处于初级阶段所以对较好的解决方案还不熟悉,希望有人能提供更好的做法)—>

/* 第一次访问的用户负责将newsList注入Application,之后其他用户的访问不会触发注入动作,新闻列表通过后台管理员
* 编辑新闻更新。这样做有一个缺点,当管理员直接操作数据库删除的时候不会触发前台的更新列表操作。从而造成展示列表
* 和数据库中的数据不一致,遇到这样的情况需要管理员手动刷新一次列表。所以一般不建议网站管理人员任意改动数据库中
* 的信息。但是这样做又会带来一个新的问题,就是可能随着网站管理功能的增加都需要让程序员编写相应的逻辑代码。
*/


*注意:

1.在Service层对数据封装时要使用到对数据库的管理:数据库自动提交关闭conn.setAutoCommit(false)—>conn.commit()—>conn.rollback()—>conn.setAutoCommit(true)。

2.管理员的界面应该放在WEB-INF/inner/目录中,只允许服务器跳转

3.ServletUtil.getConfig(String key) 方法需要读取一个名为config.properties配置文件中的信息,这个文件是提供给网站管理员配置除数据库以外的其他参数的。在里面的所有数据都可以在配置完成以后通过前面的方法读取出来。(作为演示只配置一条信息用来确定管理员的用户名,作为管理员可以在数据库中任选一个用户用来登录后台)

4.Servlet的部分就全部完成了,一些数据检查的功能在实际生产环境中应该部署到JavaScript中取检查以减少服务器压力。但是考虑到使用servlet编写的程序一般都不会大,普通pc足以运行。

5.处于安全考虑用户注册,管理员登录,用户登录,留言,新闻发布等功能都会在Log数据库表中保存相应的日志。因此需要在service层配置数据库事物。若不用配置事物可以也可以省略Dao层。

6.

总结:MVC开发模型特点就是一层套一层(自己的理解,不足之处欢迎提出),我的个人认识是从Dao层做最基本的业务逻辑处理,再到Service层进行一层封装,封装完提供给Servlet层调用,再反馈回View层展示。

关于session与cookie与application的理解:参考https://www.cnblogs.com/yunian/articles/5736066.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: