前面我们学习了Java Web开发的基本技术,包括:静态页面技术(Html,Css,JavaScript),动态页面(Jsp),数据库编程(Jdbc)、JavaBean、Servlet、Ajax等。在开发一个web项目时,可以根据实际情况,灵活搭配,下面介绍常见模式。
1、单纯jsp
理论上说,一个web项目只使用jsp是能够实现的,因为jsp既可以做界面,也可以嵌入代码做处理,但在页面中嵌入大量代码,和界面标签混在一起,使得程序可读性、可维护性很差,实现难度也很大。
2、jsp+javabean模式
将业务逻辑封装在类中供jsp调用,减少了jsp中代码。Jsp除用于显示外,仍需要调用JavaBean处理用户请求。

3、Jsp+Servlet+Javabean模式
在(2)基础上,引入Servlet作为联系Jsp和JavaBean的桥梁,进一步明确了分工,将业务逻辑和显示分离,体现了MVC(Model+View+Controller)的设计思想。这里MVC分别由JavaBean、Jsp和Servlet实现。

该模式下编程步骤
(1)设计输入页面,将请求提交到Servlet。
(2)Servlet获取请求参数,调用Javabean封装、处理数据,将结果保存到合适的范围内(请求、会话或应用),转发到输出页面(如果输出结果很简单,可用out直接输出)。常用代码:
request.setCharacterEncoding("utf-8"); //解决post提交方式下汉字乱码问题
String inputdata1=request.getParameter("parameter1");//获取原始数据1
String inputdata2=request.getParameter("parameter2");获取原始数据2
。。。//处理数据,通常要实例化javabean并调用其方法来完成数据处理
Object outputdata=...//得到结果
request.setAttribute("result",outputdata);//处理结果放在了request对象的result属性中
request.getRequestDispatcher("/output.jsp").forward(request,response);//指派输出页面显示结果(3)输出页面显示输出数据(el/jstl)。
4、JavaBean的细化
一个Web项目会频繁地操作数据库,因此我们常常将数据库的基本操作(crud,增删改查)封装在特定的类(Dao)中供调用,也即数据访问作为一层从业务逻辑中独立出来。

实现时,常把不同层的类放在不同的包下:
(1)servlet:放置Servlet类。
(2)entity:放置实体类。
(3)dao:放置数据访问类。
(4)service:放置业务逻辑类。
(5)util:放置工具类,如获取和释放连接的类。
包的命名按从大到小分级,如按:国家名 .机构名.项目名.包名。以dao包为例,可写为cn.sdau.studentmanage.dao。
5、Ajax模式
Ajax模式和传统模式(请求-响应)的区别:异步发送、接收数据,页面不需要刷新,事件驱动。服务器端(可以是Jsp,asp或php等)只需要返回字符串(JSON),页面渲染组装的工作由客户端完成。可以作为传统模式的补充,但在前后端分离模式流行的今天,它成为了主要的开发模式,是前端工程化的基础。该模式下编程过程:
(1)前端页面通过JavaScript或JQuery(推荐)向后台发出请求(不刷新页面),如使用Jquery的load/get/post/ajax等方法。
(2)后端Servlet处理请求,返回前端结果字符串(普通字符串或JSon字符串)。
response.setContentType("text/html;charset=UTF-8");//避免输出汉字乱码
PrintWriter out = response.getWriter();
out.print(resultStr);(3)前端解析返回结果,并在页面上显示。