关于JSP采用动作指令访问JavaBean的出发点

<jsp:useBean id="product" class="com.javaBean.ProductBean"/>
<jsp:setProperty property="price" value="23.5" name="product"/>
<jsp:setProperty property="num" value="2" name="product"/>
<jsp:getProperty property="totalPrice" name="product"/>

对比

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="com.javabean.ProductBean"%>
<%
Object obj=pageContext.getAttribute("product");
ProductBean product=null;
if(obj==null){
product=new ProductBean();
pageContext.setAttribute("product",product,pageContext、PAGE_SCOPE);
}else{
product=(ProductBean)obj;
}
product.setPrice(23.5f);
product.setNum(2);
%>
<%=product.getTotalPrice()%>

可以看到,使用 JSP 动作指令对 JavaBean 的访问可以做到完全不涉及 Java 代码。

这种方式大大降低了对页面设计人员的编程要求、增强页面的可维护性。因此在实际开发中,推荐采用动作指令访问 JavaBean 的方式。

[转]<jsp:forward.../>和 response.sendredirect(...) 的区别

1.forward跳转:

a.服务器端跳转,地址栏不改变;
b.执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源);
c.request设置的属性在跳转后的页面仍可以使用;
d.使用<jsp:param name="参数名" value="参数值" />传递参数。

2.response跳转:

a.客户端跳转,地址栏改变;
b.所有代码执行完毕后跳转;
c.跳转后的页面不能使用上一个页面的request属性;
d.使用地址重写传递参数(response.sendRedirect("URL?参数名=参数值"))。

[译] JSP 和 JSPX 的区别

首先,JSPX 是完成符合 XML 格式的 JSP。

进一步,JSPX 强制分离了 JS 和 XML 代码;而 JSP 在 XML/HTML中 嵌入 Java 逻辑,这不利于测试。

JSPX 有利于及早纠正错误。

多数情况下,JSPX 语法更简单。

但涉及动态内容、复杂表达式或执行逻辑时,JSP 显然更胜一筹。

辗转相除求gcd的原理

题:求正整数m, n的最大公约数

解:
不妨设 m > n,令 m % n = r。(r 为自然数)。

若 r = 0,则 n 即为所求,gcd(m,n) = n;

否则,有: r = m - kn(k 为正整数),则有:

可知:
**gcd(m,n) = gcd(n,r)**
令 r0 = n,r1 = r,ri+1 = ri-1 % ri(i 为正整数),则根据上式,有:
gcd(n,r) = gcd(r0,r1) = gcd(r1,r2) = ... = gcd(ri,ri+1) = ...
上述等值变换,要么因为序列 { ri } 递减至 1 而结束,要么因为 ri 能被 ri+1 整除 而提前终止。由于 1 可整除任何正整数,故最终总有:
**gcd(m,n) = gcd(rq,rq+1) = rq+1**