开发模式的介绍
在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II).
首先我们来理清一些概念吧:
- DAO(Data Access Object):主要对数据的操作,增加、修改、删除等原子性操作。
- Web层:界面+控制器,也就是说JSP【界面】+Servlet【控制器】
- Service业务层:将多个原子性的DAO操作进行组合,组合成一个完整的业务逻辑
- 控制层:主要使用Servlet进行控制
- 数据访问层:使用DAO、Hibernate、JDBC技术实现对数据的增删改查
- JavaBean用于封装数据,处理部分核心逻辑,每一层中都用到!
模式一
模式一指的就是在开发中将显示层、控制层、数据层的操作统一交给JSP或者JavaBean来进行处理!
模式一有两种情况:
- 完全使用JSP做开发
- 优点:
- 缺点:
- 程序的可读性差、复用性低、代码复杂!什么jsp代码、html代码都往上面写,这肯定很难阅读,很难重用!
- 开发速度贼快,只要写JSP就行了,JavaBean和Servlet都不用设计!
- 小幅度修改代码方便,直接修改JSP页面交给WEB容器就行了,不像Servlet还要编译成.class文件再交给服务器!【当然了,在ide下开发这个也不算是事】
- 使用JSP+JavaBean做开发
- 优点:
- 缺点:
- 没有流程控制,程序中的JSP页面都需要检查请求的参数是否正确,异常发生时的处理。显示操作和业务逻辑代码工作会紧密耦合在一起的!日后维护会困难
- 程序的可读性较高,大部分的代码都写在JavaBean上,不会和HTML代码混合在一起,可读性还行的。
- 可重复利用高,核心的代码都由JavaBean开发了,JavaBean的设计就是用来重用、封装,大大减少编写重复代码的工作!
应用例子:
我们使用JavaBean+JSP开发一个简易的计算器吧,效果如图下:
- 首先开发JavaBean对象
publicclassCalculator{
privatedoublefirstNum;
privatedoublesecondNum;
privatecharOperator='+';
privatedoubleresult;
//JavaBean提供了计算的功能
publicvoidcalculate(){
switch(this.Operator){
case'+':
this.result=this.firstNum+this.secondNum;
break;
case'-':
this.result=this.firstNum-this.secondNum;
break;
case'*':
this.result=this.firstNum*this.secondNum;
break;
case'/':
if(this.secondNum==0){
thrownewRuntimeException("除数不能为0");
}
this.result=this.firstNum/this.secondNum;
break;
default:
thrownewRuntimeException("传入的字符非法!");
}
}
publicdoublegetFirstNum(){
returnfirstNum;
}
publicvoidsetFirstNum(doublefirstNum){
this.firstNum=firstNum;
}
publicdoublegetSecondNum(){
returnsecondNum;
}
publicvoidsetSecondNum(doublesecondNum){
this.secondNum=secondNum;
}
publicchargetOperator(){
returnOperator;
}
publicvoidsetOperator(charoperator){
Operator=operator;
}
publicdoublegetResult(){
returnresult;
}
publicvoidsetResult(doubleresult){
this.result=result;
}
}
- 再开发显示页面
<%--开发用户界面--%>
<formaction="/zhongfucheng/1.jsp"method="post">
<tableborder="1">
<tr>
<tdcolspan="2">简单计数器</td>
<td></td>
</tr>
<tr>
<td>第一个参数:</td>
<td><inputtype="text"name="firstNum"></td>
</tr>
<tr>
<td>运算符</td>
<td>
<selectname="operator">
<optionvalue="+">+</option>
<optionvalue="-">-</option>
<optionvalue="*">*</option>
<optionvalue="/">/</option>
</select>
</td>
</tr>
<tr>
<td>第二个参数:</td>
<td><inputtype="text "name="secondNum"></td>
</tr>
<tr>
<tdcolspan="2"><inputtype="submit"value="提交"></td>
<td></td>
</tr>
</table>
</form>
- 效果: