一个简单的三层架构包括:数据层、业务层、表现层,数据层一般可以用DataBase或者NoSQL之类的,业务层就可以用Bean来包装数据访问逻辑,表现层可以用JSP来调用Bean的属性接口来设置或者获取数据以拼接展示页面。这样也就达到了页面代码与Java逻辑代码分离的效果,即前端和后端码农各司其职。
这里依然以之前的Nginx+Tomcat环境来演示例子,所以后文提到的路径会与此相关,环境配置请参见
这里。
一、Bean
一个标准的javaBean包含如下几个特性:
(1)javaBean是一个公共的类,所以必须是public class。
(2)javaBean有具有一个不带参数的构造函数,所以要么使用默认构造函数,要么定义一个
一个不带参数的构造函数。
(3)javaBean通过setXXX方法设置属性,通过getXXX方法获取属性。
简单javaBean例子SimpleBean.java如下:
package test.hello.world;
public class SimpleBean
{
private String msg = "sorry";
public String getMsg()
{
return (msg);
}
public void setMsg(String msg)
{
this.msg = msg;
}
}
二、JSP
JSP访问javaBean主要包括如下几个步骤:
(1)导入javaBean类。
(2)声明javaBean对象。
(3)访问javaBean属性。
简单JSP例子TestSimpleBean.jsp如下:
<%@ page import="test.hello.world.SimpleBean" pageEncoding="UTF-8"%>
Hello JSP+Bean
property="msg" value="hello"/>
property="msg"/>
三、编译
javaBean代码编写完成后,需要编译成.classs文件才能被JSP使用。
关于编译有几个需要注意的是地方,否则会出各种错误。
(1)包问题
javaBean中的代码必须放在包中,即package test.hello.world;,否则,会出如下错误:
Unable to compile class for JSP
xxx cannot be resolved to a type
(2).class文件路径
必须在TOMCAT_HOME目录即/home/www/web/ROOT目录下新建文件夹WEB-INF,再在此文件夹下创建classes文件夹,编译出的javaBean的.class文件必须放在此目录下,因为必须有包,所以最终会放在含有包的路径下,即/home/www/web/ROOT/WEB-INF/classes/test/hello/world/,编译指令如下:
#javac -d /home/www/web/ROOT/WEB-INF/classes SimpleBean.java
(2)jar包
必须将import的jar包放到WEB-INFO/lib下,否则,会有各种NoClassDefFoundError错误,出现这个错误时可以通过下面指令查看jar包是否正确加载了:
#java -verbose MyApp
(3)重启Tomcat
如果出现如下错误,请重启Tomcat:
(A)The value for the useBean class attribute xxx is invalid
(B)Cannot find any information on property 'xxx' in a bean of type 'xxx'
此时,在浏览器中输入或者:8080/TestSimpleBean.jsp回车就能看到hello了,更多信息请参见这里。
阅读(306) | 评论(0) | 转发(0) |