web开发的java语言步骤_java web开发入门一(servlet和jsp)基于eclispe
servlet
用java語言開發動態資源網站的技術,在doGet方法中拼接顯示html,在doPost方法中提交數據。類似于.net的ashx技術。
servlet生成的class文件存放在tomcat中webapps目錄下。
1.開發一個servlet步驟:
1)在src下新建包并編寫java類,繼承HttpServlet類
2)重寫doGet和doPost方法
package com.eggtwo.boss;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/test")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2.servlet的生命周期
構造方法: 創建servlet對象的時候調用。默認情況下,第一次訪問servlet的時候創建servlet對象? ?只調用1次。證明servlet對象在tomcat是單實例的。
init方法: 創建完servlet對象的時候調用。只調用1次。
service方法: 每次發出請求時調用。調用n次。
destroy方法: 銷毀servlet對象的時候調用。停止服務器或者重新部署web應用時銷毀servlet對象。?只調用1次。
JSP
1.特點:
用java語言+html開發動態網站的技術。jsp就是servlet()。
類似于.net的webform,jsp頁面可以java語言和html混合寫。
tomcat的work目錄存放jsp運行的臨時文件(.java和.class文件),在運行jsp頁面時動態生成并 執行。
2.創建方式:
在WebRoot下創建jsp頁面。
pageEncoding="ISO-8859-1"%>
Insert title hereout.write("hello");
Date dt=new Date();
String s=dt.toLocaleString();
%>
3.生命周期:
1)翻譯: jsp->java文件
2)編譯: java文件->class文件(servlet程序)
3)構造方法(第1次訪問)
4)init方法(第1次訪問):_jspInit()
5)service方法:_jspService()
6)destroy方法:_jspDestroy()
4.jsp語法
4.1jsp表達式:
語法:
作用: 向瀏覽器輸出變量的值或表達式計算的結果
注意:
1)表達式的原理就是翻譯成out.print(“變量” );通過該方法向瀏覽器寫出內容
2)表達式后面不需要帶分號結束。
4.2jsp腳本
語法:
作用: 執行java代碼
注意:原理把腳本中java代碼原封不動拷貝到_jspService方法中執行,不能聲明方法
4.3jsp的聲明
語法:
作用: 聲明jsp的變量或方法
注意:
1)變量翻譯成成員變量,方法翻譯成成員方法。
4.4jsp的注釋
語法:?
注意;
1)html的注釋會被翻譯和執行。而jsp的注釋不能被翻譯和執行。
4.5jsp指令
include指令:
作用: 在當前頁面用于包含其他頁面,類似于.net mvc中的分布視圖
語法:
注意:
1)原理是把被包含的頁面(header.jsp)的內容翻譯到包含頁面(index.jsp)中,合并成翻譯成一 個java源文件,再編譯運行!!,這種包含叫靜態包含(源碼包含)
2)如果使用靜態包含,被包含頁面中不需要出現全局的html標簽了!!!(如html、head、 body)
page指令:
作用: 告訴tomcat服務器如何翻譯jsp文件
language="java" --告訴服務器使用什么動態語言來翻譯jsp文件
import="java.util.*" --告訴服務器java文件使用什么包導入包,多個包之間用逗號分割
pageEncoding="utf-8" --告訴服務器使用什么編碼翻譯jsp文件(成java文件)
contentType="text/html; charset=utf-8" 服務器發送瀏覽器的數據類型和內容編碼,注意:在開發工具中,以后只需要設置pageEncoding即可解決中文亂碼問題
errorPage="error.jsp" --指定當前jsp頁面的錯誤處理頁面。
isErrorPage="false" --指定當前頁面是否為錯誤處理頁面。false,不是錯誤處理頁面,則不能使用exception內置對象;true,是錯誤處理頁面,可以使用exception內置對象。
buffer="8kb" --jsp頁面的緩存區大小
session="true" --是否開啟session功能。false,不能用session內置對象;true,可以使用session內置對象。
isELIgnored="false" --是否忽略EL表達式
%>
配置全局的錯誤處理頁面:
在web.xml中的web-app節點下配置:
500
/common/500.jsp
404
/common/404.html
5.jsp內置對象
JSP內置對象(9個內置對象):
1.pageContext javax.servlet.jsp.PageContext JSP的頁面容器
2.request ?javax.servlet.http.HttpServletrequest 獲取用戶的請求信息
3.response ? ? ?javax.servlet.http.HttpServletResponse 服務器向客戶端的回應信息
4.session ? ? ? ?javax.servlet.http.HttpSession 用來保存每一個用戶的信息
5.application javax.servlet.ServletContext 表示所有用戶的共享信息
6.config ? ? ? ?javax.servlet.ServletConfig 服務器配置信息,可以取得初始化參數
7.out ? ? ? ? ? ? javax.servlet.jsp.jspWriter 頁面輸出
8.page ? (java.lang.object)
9.exception? ? ? ?java.lang.Throwable
4個域對象的范圍:用于共享數據(設置、獲取、刪除)
page(pageContext):只在當前jsp頁面中有效, 跳轉之后無效。
request:只在一次請求中有效,服務器跳轉(轉發)之后有效。 客戶端跳無效
session:在一次會話中有效。服務器跳轉、客戶端跳轉都有效。 網頁關閉重新打開無效
application:在整個服務器上保存,所有用戶都可使用。 重啟服務器后無效
pageContext.setAttribute("age", 18);
pageContext.setAttribute("tom", 11,pageContext.REQUEST_SCOPE);
request.setAttribute("name","jack");
session.setAttribute("lily", 12);
application.setAttribute("全局",12);
%>
${name}
${tom}
${age}
${lily}
${全局}
域對象保存值,取值,刪除的方法
//設置值
pageContext.setAttribute("age", 18);
//取值
Object obj=pageContext.getAttribute("age");
if(obj==null){
out.write("已刪除");
}else{
//數字直接試用out.write輸出會亂碼
int age=Integer.parseInt(obj.toString());
out.write(Integer.toString(age));
//或者
//out.write(obj.toString());
}
out.write("
");
pageContext.removeAttribute("age");
Object obj1=pageContext.getAttribute("age");
if(obj1==null){
out.write("已刪除");
}else{
out.write(obj1.toString());
}
注意:如果設置過多的application屬性范圍會影響服務器性能。
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE
pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
6.EL表達式
6.1 作用
jsp的核心語法: jsp表達式 和 jsp腳本。
以后開發jsp的原則: 盡量在jsp頁面中少寫甚至不寫java代碼。
使用EL表達式替換掉jsp表達式
EL表達式作用: 向瀏覽器輸出域對象中的變量值或表達式計算的結果!!!
語法: ${變量或表達式}
6.2EL語法
1)輸出基本數據類型變量
1.1?從四個域獲取
${name}
1.2?指定域獲取
${pageScope.name}
1.3 輸出對象屬性:student.name? 注意:.name 相當于 getName()方法,其中name和Name要對應
域范圍:?pageScoep / requestScope / sessionScope / applicationScope
2)處理集合${studentList[0].name}
3)表達式計算 ${10+1}
7.jsp標簽
7.1 jsp標簽作用:
替換jsp腳本
7.2 Jsp標簽分類:
1)內置標簽(動作標簽): 不需要在jsp頁面導入標簽
2)jstl標簽: 需要在jsp頁面中導入標簽
3)自定義標簽 : 開發者自行定義,需要在jsp頁面導入標簽
內置標簽(動作標簽):
轉發標簽:???
參數標簽:?
例如:內部跳轉到second.jsp并帶上參數name=jack
等同于
request.getRequestDispatcher("second.jsp?name=jack").forward(request, response);
包含標簽:?
靜態包含語法:?
動態包含語法:
靜態包含:?先合并再翻譯
動態包含:?先翻譯再合并
7.3 JSTL標簽
JSTL (全名:java? standard? tag? libarary?? - ?java標準標簽庫? )
五套標簽庫:
1.核心標簽庫 (c標簽庫) 天天用
2.國際化標簽(fmt標簽庫)
3.EL函數庫(fn函數庫)
4.xml標簽庫(x標簽庫)
5.sql標簽庫(sql標簽庫)
使用JSTL標簽步驟
1) Eclispe需要導入jstl支持的jar包(標簽背后隱藏的java代碼)注意:MyEclispe使用javaee5.0的項目自動導入jstl支持jar包
eclispe導入方式:將standard.jar和jstl.jar文件拷貝到工程的\WEB-INF\lib\下,然后build path
2)使用taglib指令導入標簽庫
例如:在jsp頁面導入核心標簽庫:
3)在jsp中使用jstl標簽
保存數據:?
set標簽:保存值到域中
var:值的名稱
value:值
scope:值的范圍,page,request,session,application
--%>
獲取數據:
out標簽:獲取域中設置的數據
default:當value為null時,使用默認值
escapeXml:是否對value進行轉義,false不轉義,true轉義
--%>
單條件判斷:
多條件判斷:
優秀
良好
差
循環數據:
ArrayList list=new ArrayList();
list.add("tom");
list.add("jack");
list.add("jack");
pageContext.setAttribute("list", list);
%>
begin:從哪個元素開始,默認從0開始
end:到哪個元素結束
step:每次的增量
items:要遍歷的數據
var:每個元素的名稱
varStatus:正在遍歷的元素的狀態對象,count屬性默認從1開始
--%>
順序:${varSta.count},${names}
String sps="a-b-c";
pageContext.setAttribute("sps",sps);
%>
${ss}
重定向:
7.4 自定義標簽
開發步驟:
1.
編寫一個普通的java類,繼承SimpleTagSupport類,叫標簽處理器類
public class ShowIpTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
// 向瀏覽器輸出客戶的ip地址
PageContext pageContext = (PageContext) getJspContext();
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
String ip = request.getRemoteHost();
JspWriter out = pageContext.getOut();
out.write("使用自定義標簽輸出客戶IP地址:" + ip);
}
}
2)在web項目的WEB-INF目錄下建立eggtwo.tld文件,這個tld叫標簽庫的聲明文件。(參考核心標簽庫的tld文件)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
1.1
eggtwo
http://tag.eggtwo.com
showIp
com.eggtwo.boss.ShowIpTag
scriptless
3) 在jsp頁面的頭部導入自定義標簽庫
4) 在jsp中使用自定義標簽
總結
以上是生活随笔為你收集整理的web开发的java语言步骤_java web开发入门一(servlet和jsp)基于eclispe的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java堆与非堆的一些研究_堆和堆傻傻分
- 下一篇: java抽象和接口的理解_Java接口实