住院信息管理系统数据库课设项目介绍与总结

目录

项目技术总体概述

开发工具

简介

关键技术解析

B/S架构

MVC Moudle模型

Struts2

Struts2的原理示意和使用流程:

必要的Action类

项目目录文件

后端

Serializable接口:

前端

项目总结


项目技术总体概述

开发工具

 1、开发工具:myeclipse10.0、tomcat7.0

 2、数据库:mysql

 3、操作系统:windows 10

 5、开发语言:java、struts2、JSP

简介

本住院信息管理系统采用B-S架构,使用Java EE的技术路线,遵守MVC Model模型。

Model模型层使用数据库作为持久性储存结构,选用的后台数据库是myql。这是业界领先的数据库。

View视图层使用JSP技术。这是Java EE平台推荐的表现层技术。住院信息管理系统中使用JSP2.0规范,严格控制页面代码中的业务逻辑部分,做到不在HTML代码中混杂Java业务代码,实现了很好的业务和表现的分离。

Controller控制层采用Servlet技术。页面获取的数据通过Servlet的转发传递给后面的Java Beans进行数据的封装和与数据库的交互,反馈信息由Java Beans传递给Servlet,再由Servlet进行转发,从而实现业务逻辑和表现的完全分离。

本住院信息管理系统使用struts2.1作为MVC开发框架,整个系统有struts框架作为MVC的后台运行支持。

关键技术解析

B/S架构

B/S架构的全称为Browser/Server,即浏览器/服务器结构。

Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。

B/S架构的系统无须特别安装,只有Web浏览器即可。

其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。

B/S架构的分层:

与C/S架构只有两层不同的是,B/S架构有三层,分别为:

第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。

第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。

第三层数据层:主要是接受客户端请求后独立进行各种运算。

MVC Moudle模型

module,view,controller的缩写,就是分离模型,视图和控制的模式。
view:视图层,提供UI和呈现数据
module:模型层,业务数据的信息表示
controller:控制层,调用业务逻辑产生合适的module,传递数据给视图层用于呈现.

在该项目中采用的是Model2

是MVC的体现,javabeans是Module,而jsp仅仅充当View,Servlet是controller。
jsp向servlet提交数据,servlet进行javabeans的实例化和调用,而javabeans进行数据库的访问读取。最后servlet将访问结果交给jsp呈现。

Struts2

Struts2的原理示意和使用流程:

原理:

    下面演示一个完整的使用Struts2的实例,目的不是具体的代码,重点在于理解整个框架的运作流程。首先我们需要从apps目录中的struts2-blank示例项目中拷贝出整个lib目录。(这是使用Struts2最基本的jar包,没必要从Struts2的lib中一个一个找,因为你也不知道哪些是必需的),我们将他们导入到我们的项目中。

具体的代码中的实现:

//web.xml,首先在web.xml中添加如下代码,拦截所有请求,即所有请求现在全部归Struts2框架管了
<filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

 

//编写Action充当控制器
public class LoginAction extends ActionSupport {
    private String username;
    private String password;
    public String getUsername(){
        return this.username;
    }
    public void setUsername(String s){
        this.username = s;
    }
    public String getPassword(){
        return this.password;
    }
    public void setPassword(String s){
        this.password = s;
    }

    public String execute() throws Exception{

        if(getUsername().equals("walker")&&getPassword().equals("yam")){
            return SUCCESS;
        }
        return ERROR;
    }
}
//新建Struts.xml文件用于配置框架
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="walker" extends="struts-default">
        <action name="login" class="MyPackage.LoginAction">
//在这里并没有指定调用Login.Action中的哪一个方法,就会默认调用excute()方法。
            <result name="error">/error.jsp</result>
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>
/*login.jsp*/
<html>
  <head>
    <title>login</title>
  </head>
  <body>
    <form method="post" action="login">
        姓名:<input type="text" name="username" /><br />
        密码:<input type="password" name="password" /><br />
        <input type="submit" value="提交"/>
    </form>
  </body>
</html>

提交之后会请求URL为login的页面,login页面中已经声明了action是“login”,会跳转到指定的控制器。框架拦截器拦截,搜索Struts.xml中该URL所对应的Action控制器,转向具体的控制器,在我们写的LoginAction控制器中,我们获取表单提交的参数并做简单判断(使用的是set方法:接受前端传来的两个数据password和username),返回字符串success或者error给核心拦截器。核心拦截器读取Struts.xml中的配置查找控制器返回的字符串对应的具体视图位置(实现了页面的跳转),forward视图页面响应用户。

必要的Action类

控制类中转类

Action中get,set方法的使用流程?

  前台form中有一个<input type="text" name="username"/>
  如果传到action。在action中应该有一个属性,名字也叫username;而且这个username有get/set方法,其中get方法的命名必须为getUsername,其中set方法的命名必须为setUsername。这里方法名称按java Bean的规定注意不是setUserName和getUserName。

  struts接受这个action请求时,struts调用 username的set方法把前台的值传到action中的username(自动调用的),当action处理完成,要返回到页面时。在生成jsp的过程中,你可以在页面中使用EL,${username},这时调用username的get方法。

  例如下边实例:  

class Bean{ 

    //普通公有属性

    public Integer id;    

    //标准的java bean set/get方法

    private String username;

    public String getUsername() {

        return username;

    }

    public void setUsername(String username) {

        this.username = username;

    }   

}

2,还有,get方法的命名,为什么一定要,比如参数a,get一定要命名为getA();geta()则不行。如果参数是A呢,get什么?参数命名为A就不正确,不符合规则。所以不存在问题。

  上边问题中的命名方法getA是按java Bean的规定来命名的。这个标准就是java bean的标准,标准包括标准的set/get方法相关的东西。这个是开发struts的人定的标准,并没有特定的意义,只是为了让它规范化,有一个统一的标准。

  如果你知道什么是javaBean,你就知道属性abc的get/set方法为什么是setAbc/getAbc
  更深层次,你就应该了解Ioc,控制反转。

3,Struts2中Action必须实现execute方法吗?不必须,可以指定处理方法。

你配置里写了method={1}就会调用对应的方法,只有当你没指定method时,struts2才会默认调用execute 方法。

<package name="helloworld" extends="struts-default">    
      <action name="hello" 
            class="MyFirstPackage.HelloworldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>
   </package>

项目目录文件

后端

action包:

实现各种需要得控制器Action

dao包:

作为用户的逻辑层,实现需要的各种功能,充当Moudle的角色

dbconn包:

数据库连接文件。

pojo包:

为数据库的每个表建立一个类,便于管理每个类的数据,方便程序的编写,实体类

Serializable接口:

1、什么是Serializable接口

一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。

2、什么是序列化?

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

3、序列化对象定义

把对象转换为字节序列的过程称为对象的序列化

字节序列恢复为对象的过程称为对象的反序列化4、什么情况下需要序列化?

当我们需要把对象的状态信息通过网络进行传输,或者需要将对象的状态信息持久化,以便将来使用时都需要把对象进行序列化。

前端

 后端主要采用的是jsp进行书写,的通过ajax向后端发送请求。

项目总结

该项目实现的功能比较简单,但是struts的代码编写太繁琐,把时间浪费到这些上面不仅耗费精力而且没有对功能进一步深入,没有考虑项目的并发性,以及数据库的数据更多的情况等等,以及安装服务器tomcat以及进行装配都浪费不少时间。

接下来准备学习SpringBoot+Mybatis,节省开发成本。

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值