<a href="delete.jsp?Id=${row.Id}" onclick="if(confirm('确认删除?')){this.click();}else{return false;}">删除</a>
posted @
2005-06-07 16:10 似水流年 阅读(392) |
评论 (0) |
编辑 收藏
1.验证用户登录
<sql:query var="query" dataSource="${bookdev}">
select * from user where userName='${param.userName}' and userPwd='${param.userPwd}'
</sql:query>
<c:if test="${empty query.rows}">
<!--验证没有通过,返回登录界面-->
<font color="red">用户名或密码错误</font>
<a href="index.jsp">重新登录</a>
</c:if>
<c:if test="${!empty query.rows}">
<!--验证通过,保存用户信息到session中-->
<c:forEach var="row" items="${query.rows}">
<c:set var="userName" value="${row.userName}" scope="session" />
<c:set var="userLevel" value="${row.userLevel}" scope="session" />
</c:forEach>
<c:set var="isLog" value="1" scope="session" />
<!--页面发送到主页面-->
<c:redirect url="main.jsp" />
</c:if>
2.session控制
<c:if test="${empty sessionScope.isLog}">
你没有登录或登录超时
<a href="index.jsp">重新登录</a>
</c:if>
posted @
2005-06-07 16:07 似水流年 阅读(3641) |
评论 (3) |
编辑 收藏
以mysql为例
<sql:setDataSource
var="bookdev" //数据库名
driver="org.gjt.mm.mysql.Driver" //驱动程序
url="jdbc:mysql://localhost:3306/bookdev?useUnicode=true&characterEncoding=gb2312" //URL
user="root" //用户名
password="" //密码
scope="session"
/>
其他数据库和URL列表如下(摘自jsp应用开发详解(第二版))
数据库驱动程序和URL
数据库名 |
驱动程序 |
URL |
MS SQL Server2000 |
com.microsoft.jdbc.sqlserver.SQLServerDriver |
jdbc:microsoft:sqlserver://[ip]:[port];user=[user];passwoerd=[password] |
JDBC-ODBC |
sun.jdbc.odbc.JdbcOdbcDriver |
jdbc:odbc:[odbcsource] |
Oracle oci8 |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:oci8:@[sid] |
Oracle thin Driver |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:@[ip]:[port]:[sid] |
Cloudscape |
COM.cloudscape.core.JDBCDriver |
Jdbc:cloudscape:database |
MySQL |
org.git.mm.mysql.Driver |
jdbc:mysql://ip/database?user=?&password=? |
相关链接:java连接数据库方法http://blog.java-cn.com/more.asp?name=johnnyhg&id=341
posted @
2005-06-07 16:06 似水流年 阅读(390) |
评论 (0) |
编辑 收藏
由于mysql把\当作转义字符用,所以要把路径中的\处理成\\才可以正确保存,无奈之下copy了一段java代码实现字符替换,后来才发现原来JSTL的新增函数库就有函数已经可以实现此功能,且使用起来代码简洁,这样好的东西自然要用用。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
${fn:replace(param.sourceUrl,'\','\\')}
结果出现错误:Unterminated ${ tag。
修改代码为:
<c:set var="before" value="\\"/>
<c:set var="after" value="\\\\"/>
${fn:replace(param.sourceUrl,before,after)}
问题解决
posted @
2005-06-07 16:01 似水流年 阅读(1441) |
评论 (1) |
编辑 收藏
加密
<sql:update var="user" dataSource="${bookdev}">
insert into user values("","${param.userName}",password("${param.userPwd}"),"${param.userLevel}")
</sql:update>
解密
<sql:query var="query" dataSource="${bookdev}">
select * from user where userName='${param.userName}' and
userPwd=password('${param.userPwd}')
</sql:query>
posted @
2005-06-07 16:00 似水流年 阅读(594) |
评论 (0) |
编辑 收藏
JSP文件操作
文件的建立与删除
显示目录中的文件
读取文件中的字符
将数据写入文件
文件的建立与删除 首先取得当前的磁盘路径,指定要建立的文件的路径,再进行检查,如果文件不存在,如果文件不存在,则建立这个文件,如果文件存在,则删除这个文件。
CreateDelete.jsp
<%@ page contentType="text/html; charset=GB2312"%> <%@ page import="java.io.*" %> <%@ page language="java" %> <HTML> <HEAD> <TITLE>文件的建立与删除</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>文件的建立与删除</FONT> </CENTER> <BR> <HR> <BR> <% //建立代表目前目录位置中File.txt档的File变量, 并由fileName变量变数引用 String path = request.getRealPath("/jsphosting/wenjian"); File fileName = new File(path, "File.txt"); //检查File.txt是否存在 if(fileName.exists()) { //删除File.txt档 fileName.delete(); //输出目前所在的目录路径 out.println(path + "\\File.txt"); %> <FONT SIZE = 4 COLOR = red>存在</FONT>, 已完成 <FONT SIZE = 4 COLOR = red>删除</FONT> <% } else { //在目前的目录下建立一个名为File.txt的文字档 fileName.createNewFile(); //输出目前所在的目录路径 out.println(path + "\\File.txt"); %> <FONT SIZE = 4 COLOR = red>不存在</FONT>, 已完成 <FONT SIZE = 4 COLOR = red>建立</FONT> <% } %> </BODY> </HTML> |
显示目录中的文件
首先建立要显示的目录的FILE对象,然后调用LISTFILES方法,该方法返回一个FILE对象数组,显示数组中的所有元素即可。
ListFile.jsp
<%@ page contentType="text/html; charset=GB2312"%> <%@ page language="java" %> <%@ page import="java.io.*" %> <HTML> <HEAD> <TITLE>取得目录中的文件</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>取得目录中的文件</FONT> </CENTER> <BR> <HR> <BR> <% //取得目前目录的磁盘目录 String path = request.getRealPath("/jsphosting/wenjian"); //建立代表目前目录位置的d变量 File d = new File(path); //取得代表目录中所有文件 File list[] = d.listFiles(); %> 在<Font color = red><%= path%></Font>目录下的文件有(每个文件有其相应的功能)<BR> <Font color = blue> <ul> <% for(int i=0; i < list.length; i++) { %> <li><%= list[i].getName() %><BR> <% } %> </ul> </Font> </BODY> </HTML> |
读取文件中的字符
直接调用FILEREADER对象的READ()方法读取所要显示的字符
ReadAll.jsp
<%@ page contentType="text/html; charset=GB2312" %> <%@ page language="java" %> <%@ page import="java.io.*" %> <HTML> <HEAD> <TITLE>读取文件内容</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>读取文件内容</FONT> </CENTER> <BR> <HR> <BR> <% String path = request.getRealPath("/jsphosting/wenjian"); //取得目前目录在伺服端的实际位置 FileReader fr = new FileReader(path + "\\File.txt"); //建立FileReader变量,并设定由fr变量变数引用 int c = fr.read(); //从文件中读取一个字节 while(c != -1) //判断是否已读到文件的结尾 { out.print((char)c); //输出读取到的数据 c = fr.read(); //从文件中读取数据 if(c == 13) //判断是否为断行字节 { out.print("<BR>"); //输出分行标签 fr.skip(1); //略过一个字节 c = fr.read(); //读取一个字节 } } //关闭文件 fr.close(); %> </BODY> </HTML> |
将数据写入文件
通过调用FILEWRITER对象的WRITE()方法向文件中写入数据
Write.jsp
<%@ page contentType="text/html; charset=GB2312"%> <%@ page language="java" %> <%@ page import="java.io.*" %> <HTML> <HEAD> <TITLE>将数据写入文件</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>将数据写入文件</FONT> </CENTER> <BR> <HR> <BR> <% String path = request.getRealPath("/jsphosting/wenjian"); //取得目前目录在伺服端的实际位置 FileWriter fw = new FileWriter(path + "\\File.txt"); //建立FileWrite对象,并设定由fw对象变量引用 //将字串写入文件 fw.write("大家好!"); fw.write("祝大家学习jsp愉快!"); fw.write("希望大家能够深入了解jsp技术!"); fw.close(); //关闭文件 %> <P>写入文件内容为</P> <FONT SIZE = 4 COLOR = red> <% FileReader fr = new FileReader(path + "\\File.txt"); //建立FileReader对象,并设定由fr对象变量引用 BufferedReader br = new BufferedReader(fr); //建立BufferedReader对象,并设定由br对象变量引用 String Line = br.readLine(); //读取一行数据 out.println(Line + "<BR>"); //输出读取得的数据 br.close(); //关闭BufferedReader对象 fr.close(); //关闭文件 %> </FONT> </BODY> </HTML> |
posted @
2005-06-07 15:58 似水流年 阅读(295) |
评论 (0) |
编辑 收藏
打开tomcat/conf/servel.xml
修改(黑体字为修改部分)
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK"/>
在web页上把含有中文的url用java.net.URLEncoder.encode("中文")处理
例子:
<c:set var="test">
/<%=java.net.URLEncoder.encode("用jsp实现文件上传.pdf")%>
</c:set>
<c:redirect context="/ebooks" url="${test}"/>
链接传递中文参数例子
<a href=hello.jsp?send=<%=java.net.URLEncoder.encode("中文")%>> 点击</a>
jspsmartupload组件下载中文例子:
<%@ page contentType="text/html;charset=gb2312"
import="com.jspsmart.upload.*" %><%
SmartUpload mySmartUpload = new SmartUpload();
//String path=request.getParameter("中文");修改server.xml后
String path = new String(request.getParameter("中文").getBytes("ISO-8859-1")); //修改server.xml前
// Initialization
mySmartUpload.initialize(pageContext);
// Download file
//mySmartUpload.downloadFile("/upload/sample.zip");
// With a physical path
mySmartUpload.downloadFile(path);
response.getOutputStream().close();
// With options
// mySmartUpload.downloadFile("/upload/sample.zip","application/x-zip-compressed","downloaded.zip")
%>
posted @
2005-06-07 15:57 似水流年 阅读(4643) |
评论 (2) |
编辑 收藏
数据库需求分析:
class(一级栏目信息):classId(自动编号),className(栏目名称)
Nclass(二级栏目信息):NclassId(自动编号),NclassName(栏目名称),parentId(一级栏目id,与class表中的classId关联)
<%@ page contentType="text/html; charset=GB2312" language="java" errorPage="../error.jsp" %>
<%@ include file="../conn.jsp"%>
<%@ include file="../ds.jsp"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%request.setCharacterEncoding("gb2312"); %>
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>级联菜单</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
</HEAD>
<!--从数据库中得到二级栏目信息-->
<%String sql="select * from Nclass order by NclassId asc";
ResultSet rs=stmt.executeQuery(sql);
%>
<!--将二级栏目信息保存到数组subcat中-->
<script type="text/javascript">
var onecount;
onecount=0;
subcat = new Array();
<%
int count = 0;
while(rs.next()){
%>
subcat[<%=count%>] = new Array("<%=rs.getString("NclassName")%>","<%=rs.getString("NclassId")%>","<%=rs.getString("parentId")%>");
<%
count++;
}
rs.close();
%>
onecount=<%=count%>;
<!--决定select显示的函数-->
function changelocation(locationid)
{
document.myform.NclassId.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][2] == locationid)
{
document.myform.NclassId.options[document.myform.NclassId.length] = new Option(subcat[i][0], subcat[i][1]);
}
}
}
</script>
<FORM method="POST" name="myform" action="adminsave.jsp?action=add">
<TABLE>
<TR>
<TD>一级分类</TD>
<TD>
<SELECT name="classId" onChange="changelocation(document.myform.classId.options[document.myform.classId.selectedIndex].value)" size="1">
<OPTION selected value>==请选一级分类==</OPTION>
<sql:query var="query" dataSource="${bookdev}">
SELECT * FROM class
</sql:query>
<c:forEach var="row" items="${query.rows}">
<option value="${row.classId}">${row.className}</option>
</c:forEach>
</select>
</TD>
<TD>选择二级分类</TD>
<TD>
<SELECT name="NclassId">
<OPTION selected value>==请选二级分类==</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
posted @
2005-06-07 15:53 似水流年 阅读(654) |
评论 (0) |
编辑 收藏
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><LINK href="../hellking.css" type=text/css rel=stylesheet>
<body>
<%request.setCharacterEncoding("gb2312"); %>
<script type="text/javascript">
function setid()
{
str='<br>';
if(!window.form1.upcount.value)
window.form1.upcount.value=1;
if(window.form1.upcount.value>100){
alert("您最多只能同时上传100个文件0");
window.form1.upcount.value = 100;
setid();
}
else{
for(i=1;i<=window.form1.upcount.value;i++)
str+='<div>文件'+i+':<input type="file" name="file'+i+'"></div><br><br>';
window.upid.innerHTML=str+'<br>';}
}
</script>
<form name="form1" method="post" action="BookAction_do.jsp?action=${param.action}" >
<div>
<table border="1" cellspacing="0" cellpadding="5" bordercolordark="#CCCCCC" bordercolorlight="#000000" bordercolor="#FFFFFF" style="border-collapse: collapse" height="169">
<tr bgcolor="#CC0CCC">
<td height="28" align="left" valign="middle" bgcolor="#C0CCCC">
<div><font size="3"><b>文件上传</b></font></div>
</td>
</tr>
<tr align="left" valign="middle" bgcolor="#eeeeee">
<td bgcolor="#eeeeee" height="92" valign="top"> <br>
<table border="0" cellspacing="1" cellpadding="2">
<tr>
<td><font color="#FF0000"><b>*</b></font>上传的文件大小不能超过<font color="#FF0000">999999999</font>个字节</td>
</tr>
<tr>
<td>
<b><font color="#FF0000">*</font></b>每次可以设置同时上传<font color="#FF0000">100</font>个文件。<br>
设置上传的个数
<input type="text" value="1" name="upcount" size="20">
<input type="button" name="Button" onClick="setid();" value="设定">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="upid">
<div>文件1:
<input type="file" name="file1">
</div>
</td>
</tr>
</table>
</div>
<br>
<tr align="center" valign="middle" bgcolor="#eeeeee">
<td bgcolor="#ccc000" height="33">
<input type="submit" name="Submit" value="确定">
<input type="reset" name="Submit2" value="重执">
</td>
</tr>
</table></form>
</body>
</html>
posted @
2005-06-07 15:51 似水流年 阅读(552) |
评论 (0) |
编辑 收藏
5.1 停用目錄檢視 (Directory Listing)
在新的 Tomcat 安裝,預設目錄檢視是啟用的,這可以是一個很有用的測試工具,如果像我一樣,您有時會忘記在某個網頁應用程式使用了甚麼 servlets,可以簡單地輸入網頁應用程式的 URL ,就能取得完整的列表。
但在生產的用途上,您可能想將它關掉。如果沒有其他東西,它不鼓勵使用者在他們不應該逗留的地方閒逛。要關掉這個選項基本上兩個方法:
- 建立一個 index.html 檔案,將它放在網頁應用程式的目錄內。
- 修改整體的 web.xml 檔案將選項關掉。
第一個選項頗為簡單,因此我們只研究第二個選項。
開啟 web.xml 檔案,這檔案在 $CATALINA_HOME/conf/ 內,是整體的web.xml檔案,即是這裡有任何改變都會影響該 Tomcat 所有網頁應用程式。如果您想要更精細的控制,例如某些應用程式關掉,但某些則開啟,就需要以第一個選項來做,建立 index.html檔案。
找出以下部分:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
|
這是 web.xml 的第一部分,我們關注的選項是:
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
|
將 <param-value> 改為 false,便可關掉目錄檢視,就是那麼簡單。
5.2 自訂預設頁面
Tomcat使用的慣例與Apache網頁伺服器相同,index.html 是任何目錄的預設或首頁。有時您可能想改變為 page1.html 或是 JSP 頁面,如以下一樣 now_see_this.jsp:
要做到這樣,只需開啟網頁程式的 web.xml ,加上以下這些:
<welcome-file-list>
<welcome-file>now_see_this.jsp</welcome-file>
<welcome-file>page1.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
|
要令整個系統改變,可在 $CATALINA_HOME/conf 下修改整體的 web.xml,並將 <welcome-file> 改變指向您所選的檔案。
posted @
2005-06-07 15:47 似水流年 阅读(325) |
评论 (0) |
编辑 收藏