model是由actionform和javabena组成的
actionform用于封装客户端请求参数且自动封装到actionform中的
actionform是被actionservlet转发给action
javabean是封装了底层的业务逻辑,包括数据库的访问
ps:何谓javabean呢
struts标签提供了标签库,其中有<jsp:usebean>,<jsp:proptery>
demo:
javabean 的两种使用方式:(嵌入 java 代码方式和使用 jsp 标记符方式)【也就是当作普通的类来使用或者在 jsp 中 页面处理时有特殊的标记符处理方式】
以下是使用 javabean 的每个功能的两者不同方式比较:(用了 javabean 只是方便一点,并且可以实现组件重用而已。)
a ) jsp 中使用 javabean 的类的两种方法:(这两行代码的作用是一样的)
法一: jsp 中使用 <jsp:useBean> 标记符访问 javabean :
<jsp:useBean id="test" class="test.TestBean" />
法二: jsp 中嵌入 java 代码方式访问 javabean :
首行导入 javabean :
<%@ page import="com.javaBean.TestBean" %>
下边就可以像在 java 语言中那样用了:
<% TestBean testBean=new TestBean(); %>
b)jsp 页面之间传递和获取数据的两种方法:
l 获取数据:
法一:使用属性标记符:
<jsp:getProperty name="test" property="message" />
法二:直接嵌入 java 代码:(更简单)
<%=testBean.getName()%>
l 存数据:
法一:使用属性标记符:
设置单个元素值:
<jsp:setProperty name="test" property="name" value="jcm" />
设置 jsp 页面中所有元素的值:
<jsp:setProperty name="test" property="*" />
注:这个方法特别方便,只需要在接收数据并负责显示的 jsp 页面使用 <jsp:useBean> 之后加上这一行代码,所有数据就自动赋值了。然后在接下来的 jsp 代码中就可以使用 get 方法显示出数据了。
法二:直接嵌入 java 代码:
<%
String name=req.getParameter(“name”);
testBean.setName(name)
String pwd=req.getParameter(“password”);
testBean.setName(pwd)
%>
注:
通常 javabean 函数中除了 get 和 set 方法外,还有一个把数据存入 DB 中的方法(也就是和 DB 连接并实现 insert 语句)。
view:客户端请求被actionservler拦截时,actionservlet会根据请求判断是否需要调用model处理请求,所以说不是所有的请求都要走model层的,处理结果通过jsp呈现
control:actionservlet是系统核心控制器,是struts提供的,继承于httpservlet类,负责拦截所有得客服端http请求,根据请求决定是否要调用业务逻辑层,如果需要就转发给指定action处理,否则,直接跳转到指定jsp页面
业务逻辑控制器(action)负责处理用户请求,但业务逻辑控制器本身不具备处理能力,而是调用哪个model来完成
我们在开发过程中,会将dao service独立开,这些统称为model层