APP下载

基于B/S模式的Java编程案例分析

2014-04-29孙雅雯

计算机时代 2014年12期
关键词:程序设计

孙雅雯

摘  要: 目前Java教学中存在偏重理论知识的现象,在指导学生完成一个完整的项目时没有根据项目的实际需求来搭建项目架构、建立数据库。针对这一教学现状,基于MVC编程模式和项目架构的规范化,结合项目实际需求进行分析,通过对业务逻辑分析和简单的B/S模式编程案例的学习,进行代码的理解、分析,对理论知识和实际项目的操作做一个衔接,让学生能够学会运用书本上的知识,从而提高其Java 程序设计的综合能力。

关键词: Java 程序设计; B/S模式编程案例分析; MVC编程模式; 理论和实际的衔接

中图分类号:TP311.1          文献标志码:A     文章编号:1006-8228(2014)12-48-02

Case study of Java programming based on B/S mode

Sun Yawen

(The Information Center of Nanjing University of Technology, Nanjing, Jiangsu 210009, China)

Abstract: The current Java teaching only focuses on theoretical knowledge, which doesn't guide students to set up the project structure and the database according to the actual need of the project. Based on the MVC mode and standardization of project structure, the actual requirements of the project are analyzed. Through analyzing the business logic and studying on the simple case of B/S mode programming, code is comprehended and analyzed, theoretical knowledge and practical operation are connected. It enables the students to understand how to use the programming knowledge from books, which will improve their comprehensive ability of Java programming.

Key words: Java programming; B/S model programming case analysis; MVC programming model; the connection between theoretical knowledge and practical project

0 引言

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,具有卓越的高效性、安全性、通用性和平台移植性,因此被广泛应用于个人PC、网站平台、数据管理等一系列系统开发中。Java的广泛应用使Java人才的需求量也越来越大,许多高校的计算机专业将Java程序设计语言作为主要课程。尽管如此,在IT行业中往往还是很难招聘到合格的Java工作人员[1]。高校在Java教学中没能将理论与实际项目紧密联系起来是一个重要原因。因此,本文探讨了Java编程案例。

1 MCV编程模式

MVC是一种多层的设计创建Web应用程序的模式,其目的在于将应用程序的输入、处理和输出分开[2]。

Model是指业务模型,表示数据和业务处理。模型持有所有的数据、状态和程序逻辑。模型与数据格式没有关系,能为多个视图提供数据。例如Java Bean。

View指用户看到并与之交户的界面,显示数据库记录,最典型的就是JSP、HTML。

Controller是指控制器,是应用程序中处理用户交互的部分。负责从视图读取数据,控制用户输入,并向模型发送数据[3]。例如servlet、action。

MVC分层有助于管理复杂的应用程序,同时也让应用程序的测试更加容易。

2 逻辑分析

2.1 B/S模式

B/S(Browser/Server)是浏览器和服务器结构,它是建立在广域网、浏览器之上的,主要事物逻辑在服务器端(Server)实现,只有极少部分在前端(Browser)实现。所以不论时间、地点、人物,以何种方式接入,只要网站允许,都可以访问。而用户和网站的交互实质上就是访问并且操作数据库的过程,整个网站程序只是将数据库里面的数据用一种用户更能接受的形式表现出来,再从用户的可操作性出发,让用户通过浏览器页面就可简单轻松地对数据库进行操作。

2.2 过程分析

首先,我们需要连接数据库,按照项目需求建立许多张表,并且知道每张表的结构和联系,然后考虑如何对数据库进行具体操作。将需要对数据库中的表进行的各种操作都用SQL语句完成,并写成一个个方法,统一放在entityutil的package中,等待上级程序来调用。而调用程序则放在action的package中,它就像一个调度,根据前端页面传递的需求来选择调用entityutil中哪个方法的SQL语句来实现对数据库的操作。

程序的实现过程:当用户点击网页上的一些按钮时,便是要对数据库进行操作。比如很简单的一个修改密码的操作,当用户登录完成并点击修改密码按钮时,就会跳转到相应的页面或是弹出相应的输入框,这个是在前端页面上控制的,紧接着根据修改要求输入新旧密码,或是新密码。这个请求和输入的密码会被页面的form传入action中,在action中进行选择,找到相应的entityutil中的具体方法语句并传入参数以调用,最后entityutil中的SQL语句按照要求被执行,完成数据库的更新,此时修改密码完成。其实,从逻辑上分析这就是一个前端发送请求,后端层层调用的过程。下面我们通过一个案例分析,深入了解具体的流程和代码应该怎么去完成。

3 案例分析

以最简单的B/S模式网站登录系统为例,在用户页面输入登录名、密码,点击登录,后返回结果。若用户名、密码正确,则进入网站系统;若用户名或者密码不正确,则返回提示信息,显示登录失败,需要重新登录。

3.1 数据库表格设计、连接

在数据库中建立一张名为t_user的表格,表格中最基本的需要定义user_id、user_name、password三列,以user_id为主键。

在src中建立一个package用来存放数据库连接的程序。

创建一个以JDBC连接数据库的程序。

3.1.1 加载JDBC驱动程序[4]

通过java.lang.Class类的静态方法forName(String  className)实现。

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

3.1.2 提供JDBC连接的URL

String dbURL="jdbc:microsoft:sqlserver://localhost

(数据库IP地址):3306(端口号);

· DatabaseName=databasename(数据库名称);

3.1.3 创建数据库的连接

向java.sql.DriverManager请求并获得Connection对象,再使用Driver Manager的getConnection(String url,String username,String password)方法传入此连接的数据库的路径、数据库的用户名和密码。

userName="username(用户名)";

String userPwd="password(密码)";

try Connection con=DriverManager

.getConnection(dbURL, userName, userPwd);

System.out.println("数据库连接成功!");

catch(SQLException se) {

System.out.println("数据库连接失败!");

se.printStackTrace(); }

数据库连接是否成功即可根据现实的提示判断。

3.2 JSP页面设计及用户数据输入

在JSP页面的form中指定将要跳转的action,并且用post方法向服务器上传递参数,提交到相对应的action中。

用户名:

密码:

3.3 web.xml配置文件

web.xml是网络程序中的一个很重要的配置文件,可通过 servlet元素分配一个名称给servlet或JSP页面。

loginAction

action.LoginAction

loginAction

/loginaction

通过action名称找到相应的java文件去执行。

3.4 在src中创建一个名为entity的package

用于存放entity的程序,统一定义变量,封装get和set方法,以供程序调用。

3.5 在src中创建一个名为action的package,用于存放action类的程序

Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理。

通过web.xml找到相对应的LoginAction.java文件,找到login()方法,传入参数。

private void login(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException { ……

try {

sysuser=SysuserUtil.checkSysUser(database,

loginName,password);

}

……

}

3.5.1 获取页面传来的参数loginName和password,并且定义跳转页面url

String userName=CharSet

.toGB2312(request.getParameter("user_name"));

String password=request.getParameter("password");

String url="./front/main.jsp";//目标url

3.5.2 调用checkSysUser()从数据库中进行查询

如果返回的结果不为空,则将结果放入session中,并且跳转至指定的url页面;如果返回结果中参数为空,即输入的用户名密码在数据库中没有此记录,则弹出窗口显示:'对不起,用户名或密码不正确,或您没有权限进入!并返回登录界面。

sysuser=SysuserUtil.checkSysUser(database,loginName,password);

if (sysuser.getUser_name() != null && !sysuser

.getUser_name().equals("")) {

request.getSession().removeAttribute("sessionInfo");

sessionInfo.setUser_name(sysuser.getUser_name());

request.getSession().setAttribute("sessionInfo",sessionInfo);

} else {out.println(""); }

out.println("");

3.6 在src中创建一个名为entityutil的package

将对数据库表格的具体操作程序放入此类程序,更利于对数据库的数据处理。在SysuserEntity.java中找到login()中调用的checkSysUser(Database database,String userName,String password)方法,进行数据库处理。

String sql="Select user_name From databasename.dbo

.t_user Where user _name='" +userName + "' "

+ "And password='"+ password + "'";

try resultSet=database.getRS(sql);

while (resultSet.next())

sysuser.setUser_name(resultSet.getString("user_name"));

具体的SQL语句:从数据库databasename的t_user表格中,找出user_name和password与传入参数相同的结果中的user _name,并将结果集放入sysuser中返回给action中进行判断登录是否成功。至此整个用户登录操作全部完成。

4 结束语

对于Java编程来说,理论知识是基础,此外还需要阅读一些经典的源代码,模仿、修改、编写,以实现相应的功能。本文详细介绍了一个最简单的登录功能的实现,从逻辑结构的分析到功能代码的编写,让读者学会从分析项目需求开始,建立、连接数据库,在MVC模式下搭建项目的整体架构,编写、修改代码,了解怎么去调用、执行、调试,由浅入深地完成一个完整的项目。Java的功能够强大,基于Java的编程可以创建出更多更好的应用,研究Java教学中的编程案例,可以帮助我们更好地把Java的理论教学与实际应用紧密结合起来,培养出Java系统开发的合格人才。

参考文献:

[1] 梁志红,肖欣欣.Java程序设计的教学思考[J].计算机教育,2013.16.

[2] 张超.基于JSP的MVC设计模式探究[J].电脑与信息技术,2013.21(4).

[3] 刘宏尧.MVC模式与Java程序设计架构[J].齐齐哈尔大学学报,

2006.1.

[4] 齐鲲鹏,顾宏,唐达.JSP数据库连接技术在构建信息网站中的研究[J].

控制工程,2002.9(5).

[5] 靳晋.基于Java技术实现数据库的连接[J].才智,2011.18.

猜你喜欢

程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
OBE理念下基于Greenfoot的Java程序设计课程教学改革
PLC梯形图程序设计技巧及应用
三级甲等公立医院绩效考核程序设计