后运行时进行响应的合并,
也就是对应了Servlet中RequestDispatcher类的;
include(ServletRequest request, ServletResponse response)方法。
include动作可以传递参数:包含时动态传递参数;
在使用参数时,可以用request内置对象来获取参数的值。
2, 转发请求: (jsp也可以做控制器,但是一般用servlet; )
forward动作对应的是Servlet中RequestDispatcher类
的forward(ServletRequest request, ServletResponse response)方法,也就是把请求进行转发。
也可以写成(了解就行)
xxx/xxx.jsp
这种写法等价于上面的写法。
forward: 两个页面服务于同一个请求; 可以用请求传递参数;
不能在当
前的servlet进行输出; 直接清空缓冲区;
在使用Servlet的response的重定向sendRedirect(String location/"/jsp_app/view.jsp")
方法在使用时要包含应用的路径,注意,重定向会放弃这个请求,并向服务器发送
一个新的请求,但是响应对象还是一个。重定向是用来避免重复提交的。
重定向: 不能用请求传递参数,因为是两个请求, 可以用session;
注意:对页面的刷新操作就会再一次运行程序,也就仿佛进行了再一次的提交一样,
这也就是重复提交的问题,所以需要使用重定向来解决这个问题。
3, codebase="/jsp_app"> 应用的根;
jsp:plugin动作可以使页面上运行applet,或者是使用java代码。
applet 不能放在classes中,是在客户端运行的,必须放到客户端能访问的目录中;
前提是客户端必须支持applet; 客户端的控制台 ;
code是相对于应用的class类的路径; codebase="/jsp_app"> 是应用的根;
适合在局域网中用,不适合在互联网中应用;
转换--->编译---->运行 ;
动作: 发生在运行时;可以动态给页面传参数;
4, 创建JavaBean:
beanName="类全名" scope="page|request|session|application">
jsp:useBean动作,可以通过这个动作来使用java代码,id就是变量名,clss和type的区别在于,
使用type时不会创建对象,而只是会先查找如果有该对象就会使用,如果没有就会抛出异常,
class在没有该对象存在时,则会创建新对象。scope是用来保存实例的空间范围,
page、request、session、application,由小到大,默认为page。请求可以转发的,范围比页面大一点;
JSP中多了一个pageContext对象,指当前页面;
1)setProperty: 只会调set方法为属性赋值;
直接指定Bean属性的值,必须类型一致。
property="属性名" ; 属性名指javabean 必须有一个set方法设置这个属性的值;
不一定和成员变量名字一致;
使用表达式来为Bean的属性进行赋值;
2)
用表单中指定的参数来为Bean属性赋值,系统会自动作类型转换。仅限于基本类型;
from表单中的响应的参数名字;
3)
sp:setProperty name="对象名" property="属性名"/>
用表单中和Bean属性同名的表单项来给Bean属性赋值,这样写只会为指定的属性赋值;
4)
这种方式会自动用表单中的同名参数来为JavaBean的所有属性赋值;
匹配上就调, 匹配不上就不调,不会报错;
5) getProperty
取得指定的属性,这个动作不常用,一般用表达式代替