常用JSP代码,与大家共享
<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*,java.util.*" errorPage="" %>
字符串匹配比较:(session.getValue("MM_UserAuthorization")).toString().equals("admin")
获取客户端IP: <%= request.getRemoteAddr() %>
日期时间函数: <%=new java.util.Date().toLocaleString() %>
日期时间的输出:
日期时间: <%=(rs.getString("addsj")).substring(0,19)%>
日期: <%=(rs.getString("addsj")).substring(0,10)%>
时间: <%=(rs.getString("addsj")).substring(10,19)%>
<%=addsj.substring(0,19)%>
<% String addsj;out.print(((addsj = rs.getString("addsj"))==null)?"":addsj.substring(0,19)); %>
<%=new Date()%>
输出记录集索引:
在重复区域的循环while前加int id=rs_first; ,在rs_hasData=rs.next();前加id=id+1;
然后在循环体的表格中输出<%= id %>
一、JSP动态文本类型:
<%=rs.getObject("ListPrice")%>
<%=rs.getBoolean("commend")%> 逻辑型
<%=rs.getDate("PubDate")%> 日期型
<%=rs.getTime("sj")%> 时间型
<%=rs.getTimestamp("datetime")%>日期时间型
<%=rs.getString("Product")%> 文本型
<%=rs.getInt("ID")%> 整型
<%=rs.getLong("Price")%> 长整型
<%=rs.getFloat("Price")%> 单精度型
<%=rs.getDouble("Price")%> 双精度型
<%=rs.getBinaryStream("content")%> 备注型
<%=request.getParameter("id")%> 表单变量/URL参数
<%=session.getValue("id")%> 阶段变量
二、控制动态文本的显示长度:
<% if(title.length()>15) { %>
<%=title.substring(0,14)%>..
<% } else { %>
<%=title%><% } %>
<%=rs.getString("Description").substring(0,88)%>...
三、将动态文本插入多次:
此类情况可以解决JSP网页中的以下问题:
1.网页中有两个“转到详细页面”服务器行为传递同一个URL参数;
2.设置动态文本的动态超链接;
3.动态文本与“转到详细页面”服务器行为传递的URL参数相同;
4.动态下拉菜单及初始选取值;
5.动态单选按钮;
动态复选框;将以下代码加入复选框的input标记内
<%if (rs.getBoolean("字段")) out.print("checked=\"checked\"");%>
(一)在代码视图中定义记录集,并立即加入变量定义(此法仅适用于只生成一条记录的记录集):
<%
……
……
int 记录集名称_numRows = 0;
String 字段=记录集名称.getString("字段");
int 字段=记录集.getInt("字段");
String url_data;String url=((url_data = rs.getString("url"))==null)?"":url_data;
%>
于是网页中可以重复出现此动态文本:
<%=字段%> <%=字段%> <%=字段%>
(二)在while循环中(重复区域或动态菜单)定义变量:
String url_data;String url=((url_data = rs.getString("url"))==null)?"":url_data;
<% String 字段=记录集.getString("字段");%>
<% int 字段=记录集.getInt("字段");%>
于是网页中可以多次出现此动态文本:
<%=字段%> <%=字段%> <%=字段%>
在JSP网页中插入动态下拉菜单的方法:
1.定义通过URL参数筛选的记录集,并立即定义对应于类别字段的变量
String 变量名称=记录集名称.getString("类别字段");
2.定义类别记录集
3.插入动态下拉菜单,并设置初始选取值
4.在while循环中定义类别记录集中编号和名称的“字符型”变量,分别取代动态下拉菜单option的选定值和标签值
5.用以下代码取代option标签内判定是否选中的对应代码:
<%=(类别字段变量.toString().equals(所属类别字段变量.toString())?"selected=\"selected\"":"")%>
四、逻辑型控制显示内容:
<% if (记录集.getBoolean("字段")) out.print("是"); else out.print("否"); %>
<% if (记录集.getBoolean("字段"))%>是<% else %>否
五、条件域控制信息显示
<%if (Recordset1.getObject("ListPrice"))=="" %> 价格:<%=Recordset1.getObject("Price")%>元
<%else%>原价:<%=Recordset1.getObject("Price")%>元
现价:<%=Recordset1.getObject("ListPrice")%>元
<% String price=subProducts.getString("Price");
String listPrice=subProducts.getString("ListPrice");
if (listPrice==null)
{
%>
价格:<%=price%>元
<%}else{%>
原价:<%=price%>元 现价:<%=listPrice%>元 节省了<%=Float.valueOf(price).floatValue()-Float.valueOf(listPrice).floatValue()%>元
<% } %>
六、做减法(货币型或数字型字段):
原价:<span class="text-line"><%int cc=Recordset1.getInt("Price");%><%=cc%>元</span> 现价:<% int bb=Recordset1.getInt("ListPrice");%><%=bb%>元
节省了<%=cc-bb%>元
七、定义阶段变量:
将以下代码加在“记录集(查询)”的代码内容末,可以创建阶段变量ProductID:
<%
……
……
int 记录集名称_numRows = 0;
String id=Recordset1.getString("ProductID");
session.putValue("ProductID", id);
%>
或
将URL参数或表单变量定义为阶段变量:
<%
String id=request.getParameter("ProductID");
session.putValue("ProductID", id);
%>
将阶段变量置空: session.setAttribute("OrderID",null);
八、如果阶段变量为空,则网页重定向:
<% if (session.getValue("MM_Username")==null)
{ response.sendRedirect(response.encodeRedirectURL("../admin/error.jsp"));}
%>
<% else {%>
网页内容
<% } %>
九、记录集分行显示:
1.将以下代码放在table标签内
<% while ((rs_hasData)&&(Repeat1__numRows-- != 0))
{
int Repeat1__numRowRecs=列数;
%>
<tr>
<% while ((Repeat1__numRowRecs != 0)&&(rs_hasData)&&(Repeat1__numRows-- != 0))
{
%>
<td>单元格内的动态文本等</td>
<%
Repeat1__numRowRecs=Repeat1__numRowRecs-1;
Repeat1__index=Repeat1__index+1;
Repeat1__numRows=Repeat1__numRows-1;
rs_hasData = rs.next();
}
%>
</tr>
<% } %>
2.将以下代码放在table标签内
<tr>
<% while ((rs_hasData)&&(Repeat1__numRows-- != 0)) { %>
<td>单元格内的动态文本等</td>
<%
Repeat1__index++;
Repeat1__numRows=Repeat1__numRows-1;
rs_hasData = rs.next();
%>
<% if (Repeat1__index%列数==0) { %>
</tr><tr>
<% } %>
<% } %>
十、嵌套显示重复区域:
首先定义“大类记录集rs”,并设整个表格为大类的重复区域。
<% while ((rs_hasData)&&(Repeat1__numRows-- != 0)) { %>
<% int CategoryID=rs.getInt("CategoryID"); %>
<li><a href="category.jsp?CategoryID=<%= CategoryID %>"><%=(((rs_data = rs.getObject("CategoryName"))==null || rs.wasNull())?"":rs_data)%></a>
<ul>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection conn=DriverManager.getConnection("jdbc:odbc:shop","","");
PreparedStatement pstmt=conn.prepareStatement("select * from SubCategories where CategoryID=?");
pstmt.setInt(1,CategoryID);
ResultSet re=pstmt.executeQuery();
%>
<% while (re.next()) { %>
<li><A HREF="subcategory.jsp?SubCategoryID=<%= re.getInt("SubCategoryID") %>"><%= re.getString("SubCategoryName") %></A></li>
<% } %>
<%
re.close();
pstmt.close();
conn.close();
%>
</ul>
</li>
<%
Repeat1__index++;
rs_hasData = rs.next();
}
%>
[ 本帖最后由 lujunxiang 于 2008-1-5 18:06 编辑 ]