1.在不同頁面或者使用者之間共用資料
同一使用者,不同頁面之間共用資料
*把資料儲存在Session中;
1)javaBean的scope="session";
2)session的setAttribute()和getAttribute();
*通過cookie;
1)new Cookie()和response.addCookie();
*通過隱含的表單;
2)<input type="hidden" name="" value=""/>;
*通過ServletContext對象;
1)JSP頁面中使用getServletContext()方法獲得ServletContext()即application;
2)pageContext.setAttribute(String name, Object value, int scope);
*通過Application對象;
1)application.setAttribute();
*通過檔案系統或者資料庫;
2.不同使用者之間共用資料
*通過ServletContext對象;
*通過Application對象;
*通過檔案系統或者資料庫;
getServletConfig()
在servlet初始化時,容器傳遞進來一個ServletConfig對象並儲存在servlet執行個體中,
該對象允許訪問兩項內容:初始化參數和ServletContext對象,前者通常由容器在檔案中指定,
允許在運行時向sevrlet傳遞有關調度資訊,比如說getServletConfig().getInitParameter("debug")
後者為servlet提供有關容器的資訊。此方法可以讓servlet在任何時候獲得該對象及配置資訊。
getServletContext()
一個servlet可以使用getServletContext()方法得到web應用的servletContext
即而使用getServletContext的一些方法來獲得一些值
比如說getServletContext().getRealPath("/")來獲得系統絕對路徑
getServletContext().getResource("WEB-INF/config.xml")來獲得xml檔案的內容
3.建立錯誤頁面
1)使用errorPage和isErrorPage;
2)使用
<error-page>
<error-code>404</error-code>
<location>/pageNotFound.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/internalError.html</location>
</error-page>
<error-page>
<error-type>java.lang.NumberFormatException</error-type>
<location>/NumberFormatException,html</location>
</error-page>
4.國際化問題(Internationalization I18N)
1)response.setHeader("Content-Language", "es");設定HTML要顯示的語言
JDK中native2ascii工具,可以將漢字等語種轉換成UTF-8;
5.亂碼問題
1)GB18030>GBK>GB2312;
2)<%@ page contentType="text/html;charset=gb18030"%>
request.setCharacterEncoding("gb18030");
3)
<%! String trans(String chi)
{
String result = null;
byte temp [];
try
{
temp=chi.getBytes("iso-8859-1");
result = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return result;
}
%>
6.JSP檔案操作
1)使用ServletContext
InputStream in = getServletContext().getResourceAsStream("/file.txt");
int temp = 0;
String file = "";
while((temp = in.read()) != -1) {
file += (char)temp;
}
in.close();
2)使用帶緩衝的BufferedReader
BufferedReader buffer = new BuferedReader(new InputStreamReader(new BufferedInputStream(in));
while(buffer.readLine() != null)
3)
BufferedReader = new BufferedReader(new FileReader("c:/as.txt"));
4)寫入檔案
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileReader("c:/as.txt")));
FileWriter("c:/asd.txt", true);
7.上傳檔案
1)方法必須是post和enctype="multipart/form-data"
<form action="" method="post" enctype="multipart/form-data"/>
<input type="file" name="file2" size="20">
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="com.jspsmart.upload.*"%>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<html>
<head>
<title>上傳附件 </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<center>正在上傳檔案...
<%
//上傳附件
try
{
mySmartUpload.initialize(pageContext);
mySmartUpload.service(request,response);
mySmartUpload.upload();
String fn=fn=mySmartUpload.getFiles().getFile(0).getFileName();
mySmartUpload.save("upload/");//檔案儲存的目錄為upload
out.println("已經成功上傳了檔案,請查看<a href=upload/"+fn+">這裡</a>,看檔案是否上傳成功");
}
catch(Exception e)
{
e.printStackTrace();
}
%>
<a href=FileUpload.html>重新上傳</a>
</body>
</html>