A. jsp 框架是什麼
JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計,它 是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標准。
JSP將Java代碼和特定變動內容嵌入到靜態的頁面中,實現以靜態頁面為模板,動態生成其中的部分內容。JSP引入了被稱為「JSP動作」的XML標簽,用來調用內建功能。另外,可以創建JSP標簽庫,然後像使用標准HTML或XML標簽一樣使用它們。
標簽庫能增強功能和伺服器性能,而且不受跨平台問題的限制。JSP文件在運行時會被其編譯器轉換成更原始的Servlet代碼。JSP編譯器可以把JSP文件編譯成用Java代碼寫的Servlet,然後再由Java編譯器來編譯成能快速執行的二進制機器碼,也可以直接編譯成二進制碼。
(1)jsp前端頁面模板擴展閱讀:
有三個基本的腳本元素,作用是使JAVA代碼可以直接插入servlet.
一種是聲明標簽,在JAVA SERVLET的類體中放入一個變數的定義。靜態的數據成員也可以如此定義。
<%! int serverInstanceVariable = 1; %>
一種是腳本標簽,在JAVA SERVLET的類的_jspService()方法中放入所包含的語句。
1 <% int localStackBasedVariable = 1; out.println(localStackBasedVariable); %>
一種是表達式標簽,在JAVA SERVLET的類中放入待賦值的表達式,表達式注意不能以分號結尾。
<%= "expanded inline data " + 1 %>
B. 如何給後端程序設計前端頁面
後端伺服器一般是指servlet容器,用於執行java源程序
常見的網頁有html,htm,shtml,asp,aspx,php,jsp等格式
前兩個常用於靜態網頁,後面幾個常用於動態網頁。
這里前端網頁以比較常見的 xx.html 和 xx.jsp 網頁作為介紹,其它類似
一、靜態頁面xx.html如何跟後台交互:
先來看一個最簡單的登陸界面源代碼
user: password: <input type="submit" value="Submit"/>
</form>12
這是一個表單,我們看到裡面都是純html內容,這是一個靜態頁面,當我們點擊submit按鈕時候,瀏覽器會提交表單內的數據到伺服器的loginServlet這個相對地址,我們看看瀏覽器的地址變成啥了:
這不就是我們的後台servlet的地址嘛,然後這個地址指向的是loginServlet這個servlet,然後在web.xml文件中找到這個servlet關聯的java類,從而執行了伺服器端的程序(第一次執行,那麼會實例化,然後執行裡面init()函數,然後執行service()函數,如果是第二次調用,那麼不用實例化了,直接執行service()函數),我們來看看伺服器端的源程序:
package com.atguigu.javaweb;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class loginServlet extends MyGeneriServlet {
public void init(javax.servlet.ServletConfig config) throws ServletException{
super.init(config);
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
//獲取請求方式是GET,POST方式?
HttpServletRequest httpServletRequest=(HttpServletRequest) request;
String method=httpServletRequest.getMethod();
System.out.println(method);
//1.獲取請求參數:username,password
String username=request.getParameter(「username」);
String password=request.getParameter(「password」);
//獲取請求參數
String initUser=getServletContext().getInitParameter(「user」);
String initpassword=getServletContext().getInitParameter(「password」);
PrintWriter out=response.getWriter();
//3.對比
if(initUser.equals(username)&&initpassword.equals(password)){
out.print("Hello"+username); // 生成html內容
}else{
out.print("Sorry"+username); // 生成html內容
}
}12345678
}
上面沒有判斷此時對servlet的請求是post還是get方法,不過沒關系,request這個傳進來的參數以及包含了這些信息,自己判斷一下執行相應的操作即可
由於頁面路徑已經跳轉到servlet了,但是servlet不是一個.html文件啊,那豈不是沒有內容供瀏覽器顯示了,不是的,我們看到返回的參數response中的對象PrintWriter out用於動態生成html內容的字元串"Hello",所以這時候相當於servlet這個路徑也有了html內容了,瀏覽器的頁面就會顯示上述字元串了
二、jsp頁面如何跟後端伺服器交互:
jsp網頁文件就是html內容裡面插入java代碼,當我們訪問.jsp網頁文件時候,伺服器提前已經知道這個頁面內含有java代碼,那麼伺服器這邊就得先執行一下這些代碼(就跟執行servlet的java源代碼一樣),同時把執行的結果嵌入在當前這個.jsp頁面內,我們看看源代碼:
<%@page import=「java.util.Date」%> // 如果這個.jsp頁面中用到了一些java函數,就得導入庫,這就跟java源文件一樣的
<% out.println("Hello World!"); // 這里實際上是伺服器執行了結果,然後以文本返回給瀏覽器進行顯示 %>
上面紅色代碼就是java代碼,剛剛說過對象PrintWriter out用於動態生成html內容的字元串,所以伺服器執行完嵌入在裡面的java代碼後,就是動態生成了一串html代碼,然後一起傳給客戶端瀏覽器進行顯示
當然這種情況.jsp裡面沒有按鈕,表單這樣的控制項,現在再來看看有表單這種.jsp如何跟後端交互:
view.jsp
<%@page import=「day03_student.Student」%> // 還是得帶入java用到的庫文件
學生個人基本信息
<% Student s=(Student)request.getAttribute("students"); // %>
編號 學號 姓名 性別 年齡
<%=s.getId()%> <%=s.getStuno()%> <%=s.getName()%> <%=s.getGender()%> <%=s.getAge() %>
參考的原文:https://blog.csdn.net/myclass1312/article/details/80571867
這時候如果我們直接訪問這兒view.jsp文件,應該是沒有數據的,因為對象s無法從request對象獲取,必須得先給這個request對象賦值才行,即應該從如下servlet路徑跳轉來view.jsp文件路徑才行
public class viewservlet extends HttpServlet {
private StudentDao =new StudentDao();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String idstr = request.getParameter("id");
int id = Integer.parseInt(idstr);
//將數據放入request中,傳遞到頁面
Student student=.queryById(id);
request.setAttribute("students", student);
request.getRequestDispatcher("view.jsp").forward(request, response); // 這里是從當前頁面跳轉去哪個頁面,同時傳遞了request, response這兩個參數,這時候的request就是有內容的,接下來的view.jsp頁面就能獲取到內容而且動態生成html內容
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}123456789101112131415
}
總結:每個xx.html文件,xx.jsp文件,servlet響應程序…都是需要在客戶端瀏覽器通過URL來訪問的。
xx.jsp文件,servlet響應程序因為含有java源代碼,需要伺服器電腦先執行一下,.jsp文件中的java代碼一般會動態生成一些html內容嵌入在當前.jsp文件裡面一起給瀏覽器顯示出來;而servlet中的java代碼一般是數據處理功能的,可能會通過request.getRequestDispatcher(「view.jsp」).forward(request, response);
這樣的方式跳轉到其它有html內容的頁面的URL(同時傳遞處理好的數據過去) 來顯示結果
C. jsp是什麼干什麼的
JSP是由Sun Microsystems公司主導創建的一種動態網頁技術標准。
通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。
當有人請求JSP時,伺服器內部會經歷一次動態資源(JSP)到靜態資源(HTML)的轉化,伺服器會自動幫我們把JSP中的HTML片段和數據拼接成靜態資源響應給瀏覽器。也就是說JSP運行在伺服器端,但最終發給客戶端的都已經是轉換好的HTML靜態頁面(在響應體里)。伺服器並沒有把JSP文件發給瀏覽器。
(3)jsp前端頁面模板擴展閱讀:
能以模板化的方式簡單、高效地添加動態網頁內容。可利用JavaBean和標簽庫技術復用常用的功能代碼。
標簽庫不僅帶有通用的內置標簽(JSTL),而且支持可擴展功能的自定義標簽。有良好的工具支持。繼承了Java語言的相對易用性。
D. JSP是什麼
JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計,它是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標准。
JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標准通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,後綴名為(*.jsp)。 用JSP開發的Web應用是跨平台的,既能在Linux下運行,也能在其他操作系統上運行。
一個JSP頁面可以被分為以下幾部份:靜態數據、JSP指令、JSP腳本元素和變數、JSP動作、用戶自定義標簽。
(4)jsp前端頁面模板擴展閱讀:
JSP技術是使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在於服務端的資源的應用邏輯。
JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基於組件的設計,使基於Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。
E. 怎麼把後台獲取到的數據放到前端jsp界面
JSP頁面有幾個內置對象,需要用到的幾個如下:
request:包括http請求參數
response:請求響應
pageContext:可以用這個對象獲取request和response。
out:用於向頁面中傳入數據
假如現在login.jsp有一個表單User,需要提交到後台。
<form action="" method="post" id="User">
<input type="text" name="UserName">
<button type="submit">submit</button>
</form>
那login.jsp下有幾個對象,其中有pageContext.由於pageContext可以得到request對象。request.getParameter(name);可以得到相應欄位,可以在login.jsp中傳pageContext對象到後台。
<%
Recepter a=new Recepter();
a.getPara(pageContext);
%>
在後台處理的的是Recepter類。
public class Recepter {
String Username;
//傳入的參數為login.jsp的pageContext對象
public String getPara(PageContext pc)throws Exception{
//獲取login.jsp的寫入對象
PrintWriter out=pc.getResponse().getWriter();
ServletRequest request=pc.getRequest();
//獲取login.jsp的表單name="UserName"的數據。
String uname=request.getParameter("UserName")
out.print(uname);
}
private void setUsername(String username){
this.username=username;
}
public String getUsername(){
return Username;
}
}
現在我們的表單欄位已經傳入到Recepter的java代碼中了,可以進行相應的處理。
而後台的數據傳到前端:
可以在login.jsp中創建一個java示例,通過方法的返回值來獲取。
現在創建一個result.jsp頁面獲取Recepter的UserName,
result.jsp的部分如下:
<%Recepter recept=new Recepter()%>
<div><%=recept.getUsername()%></div>
雖然沒有遵循java對象的設計原則。但是實現了java數據前後台的簡單交互。