从零开始学习Java Web(九):JSP标准动作

    JSP 7大标准动作:

jsp:forward: 请求转发,将请求的处理转发到下一个页面。

jsp:include: 用于动态引入一个 JSP 页面。

jsp:plugin: 用于下载 JavaBean 或 Applet 到客户端作为插件使用。


jsp:useBean: 使用 JavaBean。

jsp:setProperty: 修改、设置 JavaBean 实例的属性值。

jsp:getProperty: 获取 JavaBean 实例的属性值。

jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。


forward和include一样,都要在page指定一个jsp

<jsp:include page="a.jsp"></jsp:include>
<jsp:forward page="b.jsp"> </jsp:forward>

如果在内部使用jsp:param

<jsp:include page="c.jsp">
		<jsp:param value="include" name="name2" />
	</jsp:include>

等于执行了request.setParamter("name","my name is xxx");

在b.jsp可以通过request.getParamter("name");获取。如EL表达式的${param.name}


jsp:plugin 这个暂时没有想详细的去了解他,跳过,接下来重点了解jsp:useBean的使用。

<jsp:useBean id="user" class="com.hxl.model.User" type="com.hxl.model.User" scope="page"></jsp:useBean>
这行代码会转换成

com.hxl.model.User user=pageContext.getAttribute("user");
if(user==null){
    user=new com.hxl.model.User();
    pageContext.getAttribute("user",user);
}
id就是attribute的key值,scope取值一共有四个:page、request、session、application,默认为page。 type是引用类型, class是对象类型,如果没有使用import导包的话,需要指定包名。例如People user=new User();那么type=People,class=User。


所以,使用jsp:userBean无论如何都会创建一个Bean对象,如果我们需要设置该对象的值,有两种方式。

<jsp:useBean id="user" class="com.hxl.model.User" scope="page">
	<!-- 在jsp:useBean体里面使用jsp:setProperty,则假如user为新创建的bean
	则在创建bean后对其赋值,如果不是,则不会执行jsp:useBean体-->
	<jsp:setProperty name="user" property="age" value="20"></jsp:setProperty>
</jsp:useBean>
	
<!-- 在jsp:useBean体外面使用jsp:setProperty,无论是新建的还是原有的,都将对其赋值-->
<jsp:setProperty name="user" property="age" value="20"></jsp:setProperty>


以上是对bean单个属性设置值,那么,假如是一个Form表单,包含bean的很多个属性,是不是也要一个个设值呢?其实,这个没必要,是有更好的方法的

例如:

a.jsp:
<html>
<body>
    <form action="b.jsp">
        姓名:<input type="text" name="stuName"/> 
        年龄:<input type="text" name="stuAge"/>
        ......
    </form>
</body>
</html>

b.jsp
<html>
<body>
<jsp:useBean id="student" class="com.hxl.Student" scope="request">
    <jsp:setProperty name="student" property="*"/>
</jsp:useBean>
</body>
</html>

这样就能得到Student对象,并包含stuName和stuAge的值,不过这种写法有限制,就是Student对象中必须有stuName和stuAge属性,如果你的Student对象是name和age属性,那就不可用这么写了,要将<jsp:setProperty name="student" property="*"/>改为<jsp:setProperty name="student" property="name" param="stuName"/><jsp:setProperty name="student" property="age"  param="stuAge"/>。param对应form表单中input的name属性


拿到bean对象之后,我们就可以通过<jsp:getProperty property="name" name="student"/>获取到相应的值了。只是这里有个缺陷,如果property对应的属性不是基本数据类型或者String类型变量,而是一个Object,那么,如果想继续得到Obiect里的属性,用jsp:getProperty就没办法了,这时候我们需要用EL表达式......


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值