《轻量级JavaEE-企业应用实战-Spring+Structs2+Hibernate》(一)

JavaEE分层模型
  • Domain Object(领域对象)层,此层由一系列的POJO(Plain Old JavaObject,普通的、传统的Java对象)组成,这些对象是该系统的Domain Object ,往往包含了各自所需要实现的业务逻辑方法。
  • DAO(数据访问对象),此层由一系列的DAO组件组成,这些DAO实现了数据库的创建,查询,更新,删除等原子操作。
  • 业务逻辑层:此层由一系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法,这些业务逻辑方法可能仅仅用于暴露Domain Object 对象所实现的业务逻辑方法,也可能是依赖DAO组件实现的业务逻辑方法。
  • 控制层:此层由一系列的控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
  • 表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成,负责收集用户请求,并将显示处理结果。

这里写图片描述

JavaEE应用组件
  1. 表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层的技术是JSP,也可以是Velocity、FreeMarker、Tapestry技术。
  2. 控制器组件:对于JavaEE的MVC框架而言,框架提供了一个前端核心控制器,而核心控制器负责拦截用户请求,并将请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。
  3. 业务逻辑组件:是系统的核心组件,实现系统的业务逻辑。通常,一个业务逻辑方法对应一次用户操作。一个业务逻辑方法应该是一个整体,因此我们1要求对业务逻辑方法增加事务性。业务逻辑方法应该仅仅负责业务逻辑,不应该进行数据库访问。
  4. DAO组件:数据访问对象,每一个DAO组件都提供了Domain Object对基本对象的创建、更新、查询、删除等操作,这些操作对应于数据库表的增删改查操作。当然,如果采用不同的持久层访问技术,就是使用不同数据库,DAO组件的实现会完全不同,为了实现业务逻辑组件的实现与DAO组件的实现分离,我们为每一个DAO组件都提供接口,业务逻辑组件面向DAO接口编程。
  5. 领域对象组件:领域对象抽象了系统的对象模型,通常而言,这些领域对象状态都必须保存在数据库里,因此,每一个领域对象通常对应一个或多个数据表。
JavaEE应用的优势

我可以使用JSP完成这个系统,为什么我还要使用Structs+Spring+Hibernate技术,难道就是为了听起来高深一点?为什么还要将系统分层?

我们不能仅仅考虑系统的开发过程,还要考虑系统后期维护,拓展,软件系统不是一次性系统,如果软件不具备可拓展性,当企业发生变化,我们怎么处理,所以应用JavaEE企业框架,有利我们处理这些问题。

Tomcat

这里写图片描述

到Tomcat官网,下载对应的Tomcat的压缩包,不建议使用安装文件,因为这样的话,是不利用调试,没有什么信息可见。

在使用Tomcat,只需要配置Java_Home 指向Jdk安装地址即可。然后每次打开conf下的startup.bat下启动,需要注意的是,必须允许Java 通过防火墙,否则会出现错误。

在上面一系列配置完成后,当在浏览器输入这里写链接内容,能打开Tomcat主页,表示成功。

tomcat 控制台

在Tomcat主页右上方由这3个按钮

这里写图片描述

Server Status 是显示作为服务器主机的信息,等等。

这里写图片描述

Manager控制台可以部署、监控web应用。 但是进入需要密码。

首先进入webapps/manager/web-inf路径,该路径下存放的是manager应用的配置文件,打开web.xml。在这个里面可以看到4种角色。

这里写图片描述

知道上面的角色类型,下面就是在某种角色下,注册用户。进入tomcat-users.xml,添加对应的用户名、密码,然后重新启动,即可进入控制台。

  <role rolename="manager-gui"/>
  <user username="tomcat" password="tomcat" roles="manager-gui"/>
Tomcat部署方式
  1. 利用控制台将整个项目的绝对路径部署成web应用。
  2. 将WAR文件部署成web应用。
  3. 可以将应用工程直接拷到webapps文件目录下,Tomcat会自动部署。
  4. 通过自定义web部署文件

下面展示一下第四种是如何部署

在conf\Catalina\localhost下,随便新建一个xml文件,添加下面代码。

<context docBase="d:/test/code/aa" debug="0" privileged="true"></context>

我们知道,在前面访问web应用,通过的是http://localhost:8080/项目名/,但是利用这种部署,这里用xml文件的文件名,代替了项目名,访问路径 http://localhost:8080/dd/

Ant 使用

主要用于大的项目编译。到它的官网上下载。然后在环境变量中配置,这个自己看网上的非常全。

Jsp 的工作原理

这里写图片描述

Jsp异常处理

Jsp的page指令中,由一个errorpage属性,该属性可以指定Jsp页面发现异常,跳转的页面。Jsp通过这种内置的异常处理方法。

Jsp3个编译指令
<%@ page %> 该指令主要用于当前页面的一些设置
<%@ include %>  用于指定另一个页面
<%@ taglib %>  用于自定义标签

page指令常用属性

这里写图片描述

这里写图片描述

Jsp动作指令
   <jsp:forward></jsp:forward> <%--  用于页面转 --%>
   <jsp:param></jsp:param>   <%-- 用于参数传递 --%>
   <jsp:include></jsp:include>   <%-- 用于动态引入jsp页面 --%>
   <jsp:plugin></jsp:plugin>     <%-- --%>
   <jsp:useBean></jsp:useBean>   <%--  创建一个JavaBean --%>
   <jsp:getProperty></jsp:getProperty>   <%-- 设置JavaBean 的属性值--%>
   <jsp:setProperty></jsp:setProperty>   <%-- 获取JavaBean 的属性值--%>
  <jsp:forward page="request.jsp">
  <jsp:param name="age" value="12"></jsp:param> 跳转页面,可以携带相应的参数,获取的时候通过request内置对象。
  </jsp:forward>
forward 跳转新的页面,地址栏的地址不会改变,会用新的页面来相应,所以跳转时携带参数,是不会掉的。

<jsp:include page="request.jsp"></jsp:include> 需要注意:上面我们讲指令,也可以导入页面,那种是静态导入,这种是动态导入。

静态导入,两个jsp文件编译成1个jsp文件,静态导入包含原来文件的编译指令,而动态只是导入内容,不包含原先的指令。



page Bean实例在本页面有效
session Bean 实例在该会话中有效
request Bean 实例在该请求中有效
application Bean 实例在该请求中有效

Jsp内置对象

这里常用的是九个,这里就不在多少。内置对象的使用,应该在Java代码中,所以在<%=%>或者Java脚本中使用。

我们知道内置对象,是不需要定义就可以直接使用的,这是为啥?我们都知道Jsp编译之后都变成Servlet,我们看编译后的源文件。

这里写图片描述

这里写图片描述

上述代码都是在xxxxx\work\Catalina\localhost\项目名\org\apache\jsp

我们发现在编译之后的Servlet,都由这些对象,或是定义成局部变量或是形参,所以才可以使用。

Tip

<% %> 和<%! %>虽然这两个长的差不多,但是功能不同。

<% %> 主要放Java代码,这个是毋庸置疑。在这里面不可以申明方法,但是在这个里面可以调用方法。

<%! %> 这个里面可以申明变量,方法,这里申明的变量是全局变量。

 <%show(); %>

       <%!
       public void show(){
       System.out.print('c');
       }
获取Servlet实例

 ServletContext sc = getServletConfig().getServletContext();
配置web应用下的全局参数

全局参数是配置在Web.xml下的context-param。

    <context-param>
    <param-name>url</param-name>
    <param-value>com.exmple.test</param-value>
    </context-param>

全局参数是配置整个项目下,作用范围应该是application,所以获取的时候,应该通过application内

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值