【两种设计模式的优缺点】
【JSP + JavaBean模式】
主要使用标签:
<jsp:useBean id="user" class="com.fiberhome.pojo.User" scope="page"></jsp:useBean>
<jsp:setProperty property="username" name="user"/>
<jsp:setProperty property="*" name="user"/>
<jsp:getProperty property="username" name="user"/>
<%-- <%
/* 原始接收参数 */
String username = (String)request.getAttribute("username");
String password = (String)request.getAttribute("password");
User user = new User();
user.setUsername(username);
user.setPassword(password);
System.out.println(user);
%> --%>
<!--
这句jsp标签就相当于new 了一个User对象; 并且保存在page域中
详细过程:
先在page 域中查找user,如果有就使用, 如果没有就new一个并放在page域中;
-->
<jsp:useBean id="user" class="com.fiberhome.pojo.User" scope="page"></jsp:useBean>
<!-- 单个的去封装数据 -->
<%--
<jsp:setProperty property="username" name="user"/>
<jsp:setProperty property="password" name="user"/>
--%>
<!--
统一封装
原理:
如果jsp表格中的属性名称和实体类中的属性名称一致就能封装;
-->
<jsp:setProperty property="*" name="user"/>
<!-- 打印出对象中的属性 -->
<jsp:getProperty property="username" name="user"/>
<jsp:getProperty property="password" name="user"/>
【JSP的开发模式二】:掌握
JSP + Servlet + JavaBean 称为MVC的设计模式.
MVC:
M:Model:模型层
V:View:视图层
C: controller: 控制层
案例;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/* 原始方法:
//接收数据
String username = (String) request.getParameter("username");
String password = (String) request.getParameter("password");
//封装数据
User user = new User();
user.setUsername(username);
user.setPassword(password);
*/
// 使用BeanUtils工具类的populate方法统一封装;
// 需要使用两个库文件
// commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar
User user = new User();
Map<String, String[]> parameterMap = request.getParameterMap();
try {
//直接完成数据的封装
// 原理: jsp中表格中的name值与实体类中的属性名保持一致
BeanUtils.populate(user, parameterMap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(user);
}