『壹』 jsp是什麼
JSP是一種動態網頁技術標准,這種技術可以根據客戶端的請求,生成動態或者靜態網頁,然後發送給客戶端的請求者。
不少的朋友經常會在電腦科普網站上看到jsp這個概念,究竟這個jsp是什麼意思?jsp又有什麼作用和特點呢?下面讓我們一起去了解吧。
JSP部署於網路伺服器上,可以響應客戶端發送的請求,並根據請求內容動態地生成HTML、XML或其他格式文檔的Web網頁,然後返回給請求者。JSP技術以java語言作為腳本語言,為用戶的HTTP請求提供服務,並能與伺服器上的其它Java程序共同處理復雜的業務需求。
JSP將Java代碼和特定變動內容嵌入到靜態的頁面中,實現以靜態頁面為模板,動態生成其中的部分內容。JSP引入了被稱為「JSP動作」的XML標簽,用來調用內建功能。另外,可以創建JSP標簽庫,然後像使用標准HTML或XML標簽一樣使用它們。
標簽庫能增強功能和伺服器性能,而且不受跨平台問題的限制。JSP文件在運行時會被其編譯器轉換成更原始的Servlet代碼。JSP編譯器可以把JSP文件編譯成用Java代碼寫的Servlet,然後再由Java編譯器來編譯成能快速執行的二進制機器碼,也可以直接編譯成二進制碼。
用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面,並使用JSP標識或者小腳本來生成頁面上的動態內容。生成內容的邏輯被封裝在標識和JavaBeans組件中,並且捆綁在腳本中,所有的腳本在伺服器端運行。由於核心邏輯被封裝在標識和JavaBeans中,所以Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的生成。
在伺服器端,JSP引擎解釋JSP標識和腳本,生成所請求的內容(例如,通過訪問JavaBeans組件,使用JDBC技術訪問資料庫或者包含文件),並且將結果以HTML(或者XML)頁面的形式發送回瀏覽器。這既有助於作者保護自己的代碼,又能保證任何基於HTML的Web瀏覽器的完全可用性。
『貳』 java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中,還是當被調用的時候才進行載入呢
java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中的。
1、類中的靜態屬性會被加入到類對象(也可以叫做類的模板,是類的描述) 的構造器中,靜態方法也會被加入到類對象中。
2、當第一次使用類時,JVM會通過類載入器,載入類對象,從而初始化靜態屬性,並裝入類的方法,包括靜態方法和實例方法(方法不會被調用,只是載入,從這個意義上來說,靜態方法和實例方法是類似的)。
3、當創建類的實例對象時,JVM會調用類的構造器,從而初始化類的屬性。
(2)javajsp生成靜態文件擴展閱讀:
JVM 類載入機制
JVM類載入機制分為五個部分:載入,驗證,准備,解析,初始化,下面我們就分別來看一下這五個過程。
1、載入
載入是類載入過程中的一個階段,這個階段會在內存中生成一個代表這個類的java.lang.Class對象,作為方法區這個類的各種數據的入口。注意這里不一定非得要從一個Class文件獲取,這里既可以從ZIP包中讀取(比如從jar包和war包中讀取),也可以在運行時計算生成(動態代理),也可以由其它文件生成(比如將JSP文件轉換成對應的Class類)。
2、驗證
這一階段的主要目的是為了確保Class文件的位元組流中包含的信息是否符合當前虛擬機的要求,並且不會危害虛擬機自身的安全。
3、准備
准備階段是正式為類變數分配內存並設置類變數的初始值階段,即在方法區中分配這些變數所使用的內存空間。
4、解析
解析階段是指虛擬機將常量池中的符號引用替換為直接引用的過程。符號引用就是class文件中的:
CONSTANT_Class_info
CONSTANT_Field_info
CONSTANT_Method_info
等類型的常量。
5、初始化
初始化階段是類載入最後一個階段,前面的類載入階段之後,除了在載入階段可以自定義類載入器以外,其它操作都由JVM主導。到了初始階段,才開始真正執行類中定義的Java程序代碼。初始化階段是執行類構造器<client>方法的過程。
『叄』 高分求jsp轉html問題和jsp轉do問題
若是HTML,一種方法是偽靜態,一種方法是直接生成靜態頁面。
若是do,一種是URL重寫(和上面偽靜態方法一樣),把xxx.do重定向為xxx.jsp
另一種方法是直接批量JSP文件為.do文件,然後在伺服器配置里設置.do格式的用JSP格式解析。
『肆』 如何將jsp頁面轉換成靜態頁面
將jsp頁面轉換成靜態頁面的步驟:
1、在jsp頁面中加入servlet.代碼如下:
public class ToHtml extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String url = "";
String name = "";
ServletContext sc = getServletContext();
String file_name = request.getParameter("file_name");// 你要訪問的jsp文件名,如index,不包括擴展名
// 則你訪問這個servlet時加參數.如http://localhost/test/toHtml?file_name=index
url = "/" + file_name + ".jsf";// 你要生成的頁面的文件名。我的擴展名為jsf .
name = ConfConstants.CONTEXT_PATH+"\"+ file_name + ".htm";// 這是生成的html文件名,如index.htm.文件名字與源文件名相同。擴展名為htm
//ConfConstants.CONTEXT_PATH為你的應用的上下文路徑。
RequestDispatcher rd = sc.getRequestDispatcher(url);
final ByteArrayOutputStream ōs = new ByteArrayOutputStream();
final ServletOutputStream stream = new ServletOutputStream() {
public void write(byte[] data, int offset, int length) {
os.write(data, offset, length);
}
public void write(int b) throws IOException {
os.write(b);
}
};
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
HttpServletResponse rep = new HttpServletResponseWrapper(response) {
public ServletOutputStream getOutputStream() {
return stream;
}
public PrintWriter getWriter() {
return pw;
}
};
rd.include(request, rep);
pw.flush();
FileOutputStream fos = new FileOutputStream(name); // 把jsp輸出的內容寫到xxx.htm
os.writeTo(fos);
fos.close();
PrintWriter ōut = response.getWriter();
out
.print("<p align=center><font size=3 color=red>頁面已經成功生成!single<br>http://www.agilejava.org/space/? 233</font></p>");
}
}
2、配置web.xml
<servlet>
<servlet-name>toHtml</servlet-name>
<servlet-class>mj.util.html.ToHtml</servlet-class>//你的servlet的類。
</servlet>
<servlet-mapping>
<servlet-name>toHtml</servlet-name>
<url-pattern>/toHtml</url-pattern>
</servlet-mapping>
3、運行servlet。如:http://localhost:8080/test/toHtml?file_name=index
在test項目的根目錄下,生成了一個index.htm的靜態文件。
『伍』 jsp頁面轉換成HTML
你可以新建一個jsp頁面,將html中<html></html>標簽中的內容替換jsp頁面中
<html></html>內容即可。但注意jsp頁面中的第內一行:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 改為:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
這行意容思是你用到了包和頁面中顯示的是中文。
『陸』 JSP如何生成靜態的html頁面
public class HTMLMaker {
final static Object lock = new Object();
public static void makeHtml(String page, String filePath){
makeHtml(page,filePath,"UTF-8");
}
public static void makeHtml(String page, String filePath,String chartset) {
synchronized (lock) {
HttpURLConnection huc = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
huc = (HttpURLConnection)new URL(page).openConnection();
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");
huc.connect();
InputStream stream = huc.getInputStream();
bw = new BufferedWriter(new OutputStreamWriter (new FileOutputStream(filePath),chartset));
br = new BufferedReader(new InputStreamReader(stream, chartset));
String line;
while((line = br.readLine())!= null){
if(line.trim().length() > 0){
bw.write(line);
bw.newLine();
}
}
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
br.close();
bw.close();
huc.disconnect();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
參數解釋:
page:jsp頁面的網路地址,比如http://localhost:8080/xxx/index.jsp
filePath:生成的html文件的保存路徑
chartset:編碼,不填默認utf-8。
思想:
把jsp文件開流讀入,再用輸出流寫入到目標文件。
『柒』 關於Javaweb的問題,Jsp和Servlet各自的應用場景
JSP(JavaServer Pages)和Servlet是兩種用於開發Web應用程序的伺服器端技術。
JSP是一種動態Web頁面技術,它使用Java代碼來生成HTML、XML或其他類型的文檔。JSP頁麵包含特殊的JSP標記,這些標記被解析並轉換為Java代碼,然後執行。JSP通常被用來創建動態的Web頁面,例如顯示資料庫內容或處理表單數據。
Servlet是一種Java類,它運行在Web伺服器上,並處理來自瀏覽器的請求。Servlet可以生成動態的HTML內容,也可以執行其他類型的任務,例如處理表單數據或連接資料庫。
JSP和Servlet有許多相似之處,但各自有不同的應用場景。JSP更適合用於生成靜態的Web內容,例如HTML、XML或其他文檔。Servlet更適合用於執行動態的任務,例如處理表單數據或連接資料庫。
總的來說,JSP通常被視為更為高級的技術,因為它可以在Web頁面中嵌入Java代碼,但是Servlet可以提供更多的靈活性和控制。因此,在選擇使用JSP或Servlet時,應該根據自己的需求和應用場景來決定。