关于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, gcd(m,n) = x, 令 m%n = r. 则 m = ax, n = bx(a,b 均为正整数).

若 r = 0, 则 n 即为所求;

否则, 有

r = m - kn
= (a - bk)x(k为正整数)

可知:

gcd(m,n) = gcd(n,r)

令 r0 = r, r(i+1) = n%ri,则根据上式,有:

gcd(n,r0) = gcd(r0,r1) = ... = gcd(ri,r(i+1)) = r(i+1)