വڱ̄ Ύၹ +41 ЯᎶࠫ៶
ഫㅔҟ˖ ϞϔϾഫ䗮䖛ᅝ㺙ᑊ䜡㕂 JSP ᓔথ⦃๗ǃ MyEclipse ⦃๗Ё䚼㕆䖤㸠 JSP 乍Ⳃᥠᦵњ ᓔথ JSP ࡼᗕ㔥キⱘℹ偸ˈгⶹ䘧њ JSP ⱘᴀ义䴶㒘៤ܗ㋴ˈᇍ JSP ᳝њ߱ℹ䅸䆚DŽ ᴀഫᇚᏺ乚ᆊ䖯ϔℹᄺд JSP ᑣᓔথⱘ䞡⚍üJSP ݙ㕂ᇍ䈵DŽJSP ݙ㕂ᇍ䈵ᰃᣛ ϡ䳔㽕 JSP 义䴶㓪ݭ㗙ᴹᅲ՟࣪ˈ᠔᳝ⱘ JSP 义䴶Ё䛑ৃҹⳈՓ⫼ᑊ⬅ JSP ᆍ఼ᅲ⦄ ㅵ⧚ⱘ㒘ӊˈᅗ䍋ࠄњㅔ࣪义䴶ⱘ⫼DŽJSP ݙ㕂ᇍ䈵㹿ᑓ⊯ᑨ⫼Ѣ㦋পᅶ᠋ッ᭄ǃ䕧ߎֵ ᙃǃֱᄬ᭄ㄝ᪡ЁDŽ ᡔ㛑Ⳃᷛ˖ ˄1˅ӮՓ⫼ out ᇍ䈵ᅶ᠋ッ䕧ߎݙᆍDŽ ˄2˅ӮՓ⫼ request ᇍ䈵໘⧚ᅶ᠋ッ䇋∖DŽ ˄3˅ӮՓ⫼ response ᇍ䈵ડᑨ⾡ֵᙃDŽ ˄4˅ӮՓ⫼ session ᇍ䈵ᅲ⦄䆓䯂ࠊDŽ ˄5˅ӮՓ⫼ application ᇍ䈵ᅲ⦄᭄݅ѿDŽ ⶹ䆚Ⳃᷛ˖ ˄1˅ᥠᦵ JSP ᐌ⫼ݙ㕂ᇍ䈵ⱘՓ⫼ᮍ⊩DŽ ˄2˅ᥠᦵ㸼ऩ໘⧚ⱘ㓪ᓣDŽ ˄3˅ᥠᦵ䆓䯂ࠊⱘᅲ⦄⌕DŽ ˄4˅њ㾷 URL 䇋∖খ᭄DŽ Ꮉӏࡵ˖ ˄1˅䅸䆚 JSP ⱘݙ㕂ᇍ䈵DŽ ˄2˅Փ⫼ out ᇍ䈵䕧ߎֵᙃDŽ ˄3˅㦋পᅶ᠋ッ䇋∖᭄DŽ ˄4˅ᅲ⦄义䴶䏇䕀DŽ ˄5˅ᅲ⦄䆓䯂ࠊDŽ ˄6˅ࠊ㔥义䅵఼᭄DŽ Ǐ䯂乬ᓩܹǐ JSPⱘϔϾ䞡㽕⡍ᕕህᰃᅗ㞾ᏺњࡳ㛑ᔎⱘݙ㕂ᇍ䈵ˈ䙷М᳝ાѯݙ㕂ᇍ䈵ਸ਼˛ᅗ Ӏⱘࡳ㛑জᰃབԩⱘ˛͊Ҭʷ ᝣគ +41 ᄊЯᎶࠫ៶
Ǐᅲ⦄ᗱ䏃ǐ
JSPⱘݙ㕂ᇍ䈵ࣙᣀ requestǃresponseǃoutǃsessionǃpageContextǃapplicationǃconfigǃ page exceptionDŽ↨䕗ᐌ⫼ⱘ᳝ outǃrequestǃresponseǃsession applicationDŽ䗮䖛ᄺд JSP ݙ㕂ᇍ䈵ⱘὖᗉǃߚ㉏ǃৃ㾕㣗ೈঞࡳ㛑䖭ѯⶹ䆚⚍ᴹᐂࡽ៥Ӏњ㾷 JSP ⱘݙ㕂ᇍ䈵DŽ 2.1.1 JSP ݙ㕂ᇍ䈵ὖ䗄 Java ᰃ䴶ᇍ䈵ⱘˈ⬅Ѣ JSP ᰃՓ⫼ Java Ў㛮ᴀ䇁㿔ˈ᠔ҹ JSP ᳝ᔎⱘᇍ䈵໘ ⧚㛑DŽ Java 䇁⊩ЁՓ⫼ϔϾᇍ䈵ࠡˈ䳔㽕ܜᅲ՟࣪䖭Ͼᇍ䈵ˈ䖭݊ᅲᰃϔӊ↨䕗㐕⧤ ⱘџDŽЎњㅔ࣪ᓔথˈJSP ᦤկњϔѯݙ㕂ᇍ䈵ˈ䖭ѯݙ㕂ᇍ䈵Փ⫼ᯊϡ䳔㽕ᅲ՟࣪ˈⳈ Փ⫼ेৃDŽݙ㕂ᇍ䈵г⿄Ў䱤ᇍ䈵᳝ᇍ䈵DŽݙ㕂ᇍ䈵ᰃ㹿 JSP ᆍ఼㞾ࡼᅮНⱘᇍ䈵 ব䞣ˈৃҹ JSP 义䴶ⱘ jspService()ᮍ⊩Ё㞾ࡼᅲ՟࣪䖭ѯ䱤ᇍ䈵DŽJSP ݙ㕂ᇍ䈵㟈ৃ ߚЎབϟಯ㉏˖ Ϣ䕧ܹ䕧ߎ᳝݇ⱘݙ㕂ᇍ䈵˖outǃrequestǃresponse ᇍ䈵DŽ ϢϞϟ᭛˄Context˅᳝݇ⱘݙ㕂ᇍ䈵˖sessionǃapplicationǃpageContext ᇍ䈵DŽ Ϣ Servlet ᳝݇ⱘݙ㕂ᇍ䈵˖pageǃconfig ᇍ䈵DŽ Ϣ䫭䇃˄Error˅໘⧚᳝݇ⱘݙ㕂ᇍ䈵˖exception ᇍ䈵DŽ 2.1.2 JSP ݙ㕂ᇍ䈵ⱘ㣗ೈ 㸼 2-1 ߫ߎњ JSP ⱘ 9 Ͼݙ㕂ᇍ䈵ⱘৃ㾕㣗ೈঞ݊ࡳ㛑ᦣ䗄DŽ 㸼 2-1 JSP ⱘݙ㕂ᇍ䈵 ᇍ䈵ৡ ᇍ䈵㉏ൟ ৃ㾕㣗ೈ ᦣ䗄
out javax.servlet.jsp.JspWriter page ᦤկᇍ䕧ߎ⌕ⱘ䆓䯂
request javax.servlet.http.HttpServletRequest request ᦤկᇍ HTTP 䇋∖᭄ⱘ䆓䯂ˈৠᯊ䖬ᦤ կ⫼Ѣࡴܹ⡍ᅮ䇋∖᭄ⱘϞϟ᭛ response javax.servlet.http.HttpServletRespon
se page
ܕ䆌Ⳉ䆓䯂 HttpServletResponse ᇍ䈵ˈ ৃ⫼ᴹᅶ᠋ッ䕧᭄ܹ
session javax.servlet.http.HttpSession session
ৃ⫼ᴹֱᄬ᳡ࡵ఼ϢϔϾᅶ᠋ッП䯈 䳔㽕ֱᄬⱘ᭄ˈᔧᅶ᠋ッ݇䯁㔥キⱘ᠔ ᳝㔥义ᯊˈsession ব䞣Ӯ㞾ࡼ⍜༅
application javax.servlet.ServletContext application
ҷ㸼ᑨ⫼ᑣϞϟ᭛ˈᅗܕ䆌 JSP 义䴶Ϣ ࣙᣀৠϔᑨ⫼ᑣЁⱘӏԩ Web 㒘ӊ ݅ѿֵᙃ
pageContext javax.servlet.jsp.PageContext page
ᰃ JSP 义䴶ᴀ䑿ⱘϞϟ᭛ˈᅗᦤկњଃϔ ϔ㒘ᮍ⊩ᴹㅵ⧚᳝ϡৠ⫼ඳⱘሲᗻˈ 䖭ѯ API ᅲ⦄ JSP 㞾ᅮНᷛㅒ໘⧚ᑣ ᯊ䴲ᐌ᳝⫼
㓁㸼
ᇍ䈵ৡ ᇍ䈵㉏ൟ ৃ㾕㣗ೈ ᦣ䗄
page java.lang.Objectˈे HttpJspBase page ҷ㸼 JSP 义䴶ᇍᑨⱘ Servlet ㉏ᅲ՟ config javax.servlet.ServletConfig page ܕ䆌ᇚ߱ྟ᭄࣪Ӵ䗦㒭ϔϾ JSP 义䴶 exception java.lang.Throwableˈे Exception page ᳝া㛑⬅ᣛᅮⱘ JSPĀ䫭䇃໘⧚义䴶ā
䆓䯂ⱘᓖᐌ᭄ 䗝ᢽ㣗ೈᯊˈᑨ䙉ᕾབϟॳ߭˖ བᵰ᭄াϔϾ义䴶⫼ࠄˈህ⫼ page 㣗ೈDŽ བᵰ᭄Ͼ义䴶⫼ࠄˈህ⫼ request 㣗ೈDŽ བᵰ᭄Ͼ䇋∖Ё⫼ࠄˈህ⫼ session 㣗ೈDŽ བᵰ᭄Ͼ session Ё⫼ࠄˈህ⫼ application 㣗ೈDŽ Ǐ䯂乬ᓩܹǐ outᇍ䈵ᰃᐌ⫼ⱘ JSP ݙ㕂ᇍ䈵Пϔˈ䗮䖛 out ᇍ䈵ৃҹᅶ᠋ッ⌣㾜఼䕧ߎֵᙃˈᑊϨ ㅵ⧚ᑨ⫼᳡ࡵ఼Ϟⱘ䕧ߎ㓧ކऎˈབԩՓ⫼ out ᇍ䈵ਸ਼˛
͊Ҭ̄ Ύၹ PVU ࠫ៶ᣥѣηৌ
Ǐᅲ⦄ᗱ䏃ǐ JSP ᭛ӊЁՓ⫼ out ᇍ䈵ⱘ print() println()ᮍ⊩ৃ义䴶Ϟ䕧ߎֵᙃˈout ᇍ䈵ⱘ clear() ᮍ⊩ৃ⫼ᴹㅵ⧚㓧ކऎDŽ 2.2.1 ᅶ᠋ッ䕧ߎ᭄ out ᇍ䈵ϔϾ᳔ᴀⱘᑨ⫼ህᰃᅶ᠋ッ⌣㾜఼䕧ߎֵᙃDŽout ᇍ䈵ৃҹ䕧ߎ⾡᭄㉏ ൟⱘ᭄ˈ䕧ߎ䴲ᄫヺІ㉏ൟⱘ᭄ᯊˈӮ㞾ࡼ䕀ᤶЎᄫヺІ䖯㸠䕧ߎDŽout ᇍ䈵ᦤկњ print() println()ϸ⾡义䴶Ё䕧ߎֵᙃⱘᮍ⊩ˈϡৠⱘᰃˈprintln()䖬ৢ䴶⏏ࡴϔϾぎ㸠ˈϡ䖛䖭 Ͼぎ㸠㹿⌣㾜఼㾷ᵤᯊᗑ⬹DŽ Ǐ՟ 2.1ǐՓ⫼ out ᇍ䈵义䴶䕧ߎ᭄DŽ ⏙ऩ 2-1 out1.jsp <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
<head>
<title>Փ⫼ out ᇍ䈵Ḝ՟ 1</title> </head>
<body> <%
out.println("Փ⫼ out ᇍ䈵ⱘ println ᮍ⊩䕧ߎᄫヺІDŽ"); out.println("ᅲ⦄ᤶ㸠њ<br>"); out.print("<br>"); out.print(3.14159); %> <br> <%="䖭ᰃՓ⫼㸼䖒ᓣ䕧ߎ" %> </body> </html> ᴀḜ՟ⱘ䖤㸠ᬜᵰབ 2-1 ᠔⼎DŽৃ㾕Փ⫼ print()ᮍ⊩ println()ᮍ⊩义䴶䕧ߎֵᙃ ᯊᑊϡ㛑ᕜདഄऎߚߎϸ㗙ⱘऎ߿ˈЎњ㛑ⳳℷᅲ⦄义䴶Ёᤶ㸠ˈ䳔㽕䗮䖛 print("<br>") println("<br>")ᮍ⊩ᅲ⦄DŽ䗮䖛 out ᇍ䈵ⱘ print println ᮍ⊩ᅶ᠋ッ⌣㾜఼䕧ߎֵᙃϢՓ⫼ JSP㸼䖒ᓣ䕧ߎֵᙃⳌৠDŽ 2-1 Ḝ՟䖤㸠㒧ᵰ 2.2.2 ㅵ⧚㓧ކऎ outᇍ䈵ⱘϔϾ䞡㽕ࡳ㛑ህᰃᇍ㓧ކऎ䖯㸠ㅵ⧚DŽ㸼 2-2 ߫ߎњ out ᇍ䈵ㅵ⧚㓧ކऎⱘ ᮍ⊩DŽ 㸼 2-2 out ᇍ䈵ㅵ⧚㓧ކऎⱘᮍ⊩ ᮍ⊩ 䇈ᯢ void clear() ⏙䰸㓧ކऎⱘݙᆍˈԚϡᡞ᭄䕧ߎࠄᅶ᠋ッ void clearBuffer() ⏙䰸㓧ކऎⱘᔧࠡݙᆍˈᑊᡞ᭄䕧ߎࠄᅶ᠋ッ void close() ݇䯁䕧ߎ⌕ˈ⏙䰸᠔᳝ⱘݙᆍ void flush() ゟे䕧ߎ㓧ކऎ䞠ⱘ᭄ int getBufferSize() 䖨ಲ㓧ކऎҹᄫ㡖᭄ⱘᇣ˄KB˅ˈབϡ䆒㓧ކऎ߭Ў 0 int getRemaining() 䖨ಲ㓧ކऎЁ࠽ԭぎ䯈ⱘᇣ
boolean isAutoFlush() 䖨ಲ㓧ކऎ⒵ᯊᰃ㞾ࡼ⏙ぎ䖬ᰃᡯߎᓖᐌDŽ㢹䖨ಲ trueˈ߭㓧ކऎ⒵ᯊᰃ㞾 ࡼ⏙ぎ˗㢹䖨ಲ falseˈ߭㓧ކऎ⒵ᯊᡯߎᓖᐌ
Ǐ䯂乬ᓩܹǐ ࡼᗕ㔥义᳝ѸѦᗻˈ㗠㛑໘⧚ᅶ᠋ッ䇋∖ᰃϢ⫼᠋䖯㸠ֵᙃѸѦⱘ⸔DŽ䙷М᳡ࡵ ఼ᰃབԩ㦋পᅶ᠋ッ䇋∖᭄ⱘਸ਼˛
͊Ҭʼ ᖍԩࠇਗ਼ቫឰර
Ǐᅲ⦄ᗱ䏃ǐ request ᇍ䈵ᰃ JSP Ё᳔ᐌ⫼ⱘᇍ䈵Пϔˈ⫼Ѣᇕ㺙ᅶ᠋ッⱘ䇋∖ֵᙃˈ䗮䖛䇗⫼Ⳍᑨⱘ ᮍ⊩ৃҹ㦋পᅶ᠋ッᦤѸⱘֵᙃDŽ⫼᠋ৃҹՓ⫼ HTML 㸼ऩᦤѸᅶ᠋ッ᭄ˈгৃҹ䞛⫼䇋 ∖খ᭄ⱘᮍᓣᇚᅶ᠋ッ᭄ᦤѸ㒭᳡ࡵ఼DŽϟ䴶䗮䖛Ḝ՟ᮍᓣᴹ⏅ܹᄺдབԩՓ⫼ request ᇍ 䈵ⱘⳌ݇ᮍ⊩㦋প㸼ऩ᭄ঞ䇋∖খ᭄DŽ 2.3.1 㦋প HTML 㸼ऩᦤѸⱘ᭄ ⫼᠋䗮ᐌՓ⫼ HTML 㸼ऩ᳡ࡵ఼ⱘᶤϾ JSP 义䴶ᦤѸֵᙃˈϔ㠀ḐᓣЎ˖<form method="get/post" action="㸼ऩ㽕ᦤѸࠄⱘഄ⚍"> [ᬊ᭄ⱘ㸼ऩ㒘ӊ] [᭄ᦤѸӊ] </form> Ǐ՟ 2.2ǐ⫼᠋ 2-2 ᠔⼎ⱘ⊼ݠ义䴶 reginput.jsp Ё฿ݭ⊼ݠֵᙃˈऩߏĀᦤѸāᣝ䪂 ৢᰒ⼎䕧ܹⱘ⊼ݠֵᙃˈབ 2-3 ᠔⼎DŽ 2-2 䕧ܹ⊼ݠֵᙃ 2-3 义䴶ᦤѸৢᰒ⼎⊼ݠֵᙃ ᅲ⦄བϟ˖ ˄1˅㓪ݭ reginput.jsp 义䴶ˈࣙ⊼ݠ㸼ऩˈ䆹㸼ऩ᭄ᦤѸࠄ doreg.jsp 义䴶DŽ ⏙ऩ 2-2 reginput.jsp <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<html> <head>
<title>⊼ݠ义䴶</title> </head>
<body>
䇋฿ݭ⊼ݠֵᙃ˖<br>
<form action="doreg.jsp" method="post"> ⫼᠋ৡ˖<input type="text" name="uname"><br>
ᆚ ⷕ˖<input type="password" name="pwd"><br>
ᗻ ߿˖<input type="radio" name="sex" value="male">⬋<input type="radio" name="sex" value="female">ཇ<br>
ᄺ ग़˖<select name="study"> <option value="ᴀ⾥">ᴀ⾥</option> <option value="⸩">⸩</option> <option value="म">म</option> </select><br>
⠅ ད˖<input type="checkbox" name="like" value="ଅ℠">ଅ℠ <input type="checkbox" name="like" value="䏇㟲">䏇㟲
<input type="checkbox" name="like" value="䯙䇏">䯙䇏 <input type="checkbox" name="like" value="ᮙ␌">ᮙ␌<br>
<input type="submit" value="ᦤѸ"> <input type="reset" value="⏙ぎ"> </form>
</body> </html>
˄2˅㓪ݭ doreg.jsp 义䴶ˈ⫼Ѣ㦋প reginput.jsp 义䴶Ё฿ݭⱘ⊼ݠֵᙃᑊᰒ⼎DŽ
⏙ऩ 2-3 doreg.jsp <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <html> <head> <title>䕧ߎ⊼ݠֵᙃ</title> </head> <% request.setCharacterEncoding("GBK"); //䆒㕂䇋∖ⱘ㓪ⷕ String name=request.getParameter("uname"); String password=request.getParameter("pwd"); String xb=request.getParameter("sex"); String xl=request.getParameter("study"); String ah[]=request.getParameterValues("like"); //㦋প䗝乍ⱘؐ %> <body> 㸼ऩЁ䕧ܹⱘݙᆍЎ˖<br> ⫼᠋ৡ˖<%=name %><br> ᆚⷕ˖<%=password %><br> ᗻ߿˖<%=xb %><br> ᄺग़˖<%=xl %><br> ⠅ད˖<% if(ah!=null){
for(int i=0;i<ah.length;i++) out.print(ah[i]+" "); } %><br>
</body> </html>
reginput.jspЁ㸼ऩֵᙃᦤѸ㟇 doreg.jsp ᭛ӊ໘⧚ˈ㸼ऩֵᙃⱘথ䗕ᮍᓣ䞛⫼ post ᮍᓣDŽ post ᮍᓣӮᇚ㸼ऩⱘݙᆍ䗮䖛 http থ䗕ˈഄഔᷣЁⳟϡࠄ㸼ऩⱘᦤѸֵᙃˈ㗠ϨՓ⫼ post ᮍᓣথ䗕ֵᙃ≵᳝ᄫヺ䭓ᑺⱘ䰤ࠊDŽ 2-4 ᠔⼎ህᰃ䞛⫼ post ᮍᓣথ䗕ֵᙃᑊՓ⫼ doreg.jsp ᬊֵᙃৢⱘ义䴶DŽ
㢹ᡞ reginput.jsp Ё㸼ऩֵᙃⱘথ䗕ᮍᓣᬍЎ get˄े method="get"˅ˈ䙷М㸼ऩݙᆍ㒣䖛 㓪ⷕПৢ䗮䖛 URL থ䗕˄ৃҹഄഔᷣЁⳟࠄ㸼ऩֵᙃˈϡᅝܼˈϔ㠀ϡᓎ䆂Փ⫼ get ᮍᓣ˅DŽ Փ⫼ get ᮍᓣথ䗕ֵᙃᯊ᳝ 255 Ͼᄫヺⱘ䰤ࠊDŽ 2-5 ᠔⼎ህᰃ䞛⫼ get ᮍᓣথ䗕ֵᙃDŽ
2-4 䞛⫼ post ᮍᓣথ䗕ֵᙃ 2-5 䞛⫼ get ᮍᓣথ䗕ֵᙃ
doreg.jspЁՓ⫼ request ᇍ䈵ⱘ getParameter ᮍ⊩㦋ᕫϞϔϾ义䴶㸼ऩЁ᭛ᴀḚǃᆚⷕḚǃ ऩ䗝ḚǃϟᢝḚ᠔ᦤѸⱘऩϾখ᭄ؐˈབՓ⫼ getParameter ("uname")ᮍ⊩ৃҹ㦋পࠄϔϾᄫヺ Іˈ݊Ё uname Ў㸼ऩӊⱘৡ⿄˗Փ⫼ request ᇍ䈵ⱘ getParameterValues ᮍ⊩㦋ᕫϞϔϾ义 䴶Ё䗝Ḛ᠔ᦤѸⱘϾখ᭄ؐˈབՓ⫼ getParameterValues("like")ᮍ⊩ৃҹ㦋পࠄϔϾᄫヺ І᭄㒘ˈ䖭Ͼ᭄㒘Ёᄬټⱘህᰃ᠔᳝䗝Ёⱘ䗝乍ᇍᑨⱘؐDŽ
㸼ऩЁ䕧ܹ䗝ᢽⱘ᭄᳝ৃ㛑ᰃЁ᭛ⱘˈЎњ䙓ܡߎ⦄хⷕ䯂乬ˈ䳔㽕Փ⫼ request ᇍ 䈵ⱘ setCharacterEncoding ᮍ⊩ˈᣛᅮ䇋∖ⱘ㓪ⷕᮍᓣˈϔ㠀Ў GBK UTF-8DŽ䇗⫼ request ᇍ䈵ⱘ setCharacterEncoding ᮍ⊩ⱘ䇁হϔᅮ㽕义䴶Ё≵᳝䇗⫼ӏԩ request ᇍ䈵ⱘᮍ⊩ᯊᠡ 㛑Փ⫼ˈ৺߭䆹䇁হᇚϡ䍋⫼DŽ 2.3.2 㦋প䆓䯂䇋∖খ᭄ request ᇍ䈵⫼Ѣ໘⧚ HTTP 䇋∖Ёⱘ乍খ᭄DŽ䖭ѯখ᭄Ёˈ᳔ᐌ⫼ⱘህᰃ㦋প䆓䯂 䇋 ∖ খ ᭄ DŽ 㸼 ऩ Ё 䞛 ⫼ get ᮍ ᓣ ᦤ Ѹ ᭄ ᯊ ˈ ഄ ഔ ᷣ Ё ᰒ ⼎ ⱘ ഄ ഔ Ў http://localhost:8080/MyWeb/ch02/doreg.jsp?uname=greatwall&pwd=123456&sex=male&study=% B2%A9%CA%BF&like=%B3%AA%B8%E8&like=%D4%C4%B6%C1ˈ៥Ӏথ⦄ᅶ᠋ッ㽕Ӵ䗦 㒭Ⳃᷛ᭛ӊⱘ᭄Ā?āৢ䴶ˈгህᰃ᭄Ⳃᷛ᭛ӊП䯈⫼Ā?ā䱨ᓔˈ᭄ⱘḐᓣЎĀ䇋 ∖খ᭄ৡ=খ᭄ؐāDŽབᵰ᳝Ͼ䇋∖খ᭄㽕Ӵ䗦ˈϾখ᭄ؐᇍП䯈䗮䖛Ā&āߚ䱨ᓔDŽ Փ⫼䇋∖খ᭄ᔶᓣӴ䗦᭄ⱘᮍ⊩䗮ᐌ⫼䍙㑻䫒ЁˈᔧӴ䗦᭄ϡᯊˈৃҹⳈ
䗮䖛䫒ᴹӴ䗦᭄DŽ
Ǐ՟ 2.3ǐ䖯㸠㗏义ᯊˈ䗮䖛䍙㑻䫒Ӵ䗦ᔧࠡ义ⷕDŽ
<a href="index.jsp?page=<%=prep %>">Ϟϔ义</a><br> <a href="index.jsp?page=<%=nextp %>">ϟϔ义</a>
ᔧ⚍ߏϞϔ义䍙㑻䫒ᯊˈӮᠧᓔ index.jsp 义䴶ˈৠᯊ䗮䖛 page খ᭄Ӵ䗦ᔧࠡ义ⷕ˄㸼 䖒ᓣ prep ⱘؐ˅ˈѢᰃৃҹ index.jsp ЁՓ⫼ request ᇍ䈵ⱘ getParameter ᮍ⊩㦋ᕫӴ䗦ⱘ page খ᭄ⱘؐˈԧҷⷕབϟ˖ <% String p=request.getParameter("page");%> Փ⫼ request ᇍ䈵ⱘ getParameter ᮍ⊩㦋ᕫӴ䗦ⱘখ᭄ؐᯊˈབᵰᣛᅮⱘখ᭄ϡᄬˈ ᇚ䖨ಲ null˗བᵰᣛᅮњখ᭄ৡˈԚᣛᅮখ᭄ؐˈᇚ䖨ಲぎⱘᄫヺІ""DŽ Ǐ՟ 2.4ǐ໘⧚㦋প䇋∖খ᭄ᯊхⷕDŽ ˄1˅㓪ݭ req1.jsp 义䴶ˈࣙϔϾ䍙㑻䫒ˈ䗮䖛䆹䫒Ӵ䗦㢹ᑆখ᭄ˈ݊ЁࣙЁ᭛ খ᭄ؐDŽ ⏙ऩ 2-4 req1.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>䍙㑻䫒Ӵ䗦খ᭄</title> </head> <body>
<a href="req2.jsp?user=⥟&id=2">ࠄ req2.jsp</a> </body>
</html>
˄2˅㓪ݭ req2.jsp 义䴶ˈ⫼Ѣ㦋প req1.jsp 义䴶Ӵ䗦䖛ᴹⱘ䇋∖খ᭄ᑊᰒ⼎DŽ
⏙ऩ 2-5 req2.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>㦋প䇋∖খ᭄</title> </head> <body> <%
String n=new String(request.getParameter("user").getBytes("iso-8859-1"),"utf-8") ; int id=Integer.parseInt(request.getParameter("id")); //㉏ൟ䕀ᤶЎ int
%> <%=n %><br> <%=id %> </body> </html> Փ⫼䍙㑻䫒䖯㸠᭄Ӵ䗦ᯊ䞛⫼ get ᮍᓣᦤѸ䇋∖ˈབᵰӴ䗦᭄ЁᄬЁ᭛ˈ⬅Ѣ
䇋∖খ᭄䞛⫼ⱘᰃ ISO-8859-1 㓪ⷕˈϡᬃᣕЁ᭛ˈ㢹Փ⫼ request ᇍ䈵Ⳉ㦋পᯊᆍᯧѻ⫳х ⷕ䯂乬ˈЎ䙓ܡхⷕ䯂乬ˈ䳔㽕ᇍ㦋পⱘ᭄䞡ᮄ䖯㸠㓪ⷕDŽ⬅ѢՓ⫼ request ᇍ䈵㦋পⱘ᭄ ㉏ൟഛᰃ String ㉏ൟˈ㗠ৃҹᇚ㦋পࠄⱘ᭄䗮䖛 String ᵘ䗴ᮍ⊩Փ⫼ UTF-8 GBK 㓪 ⷕ䞡ᮄᵘ䗴ϔϾ String ᇍ䈵ˈᠡৃҹℷ⹂ᰒ⼎ߎЁ᭛ˈ㾕 reg2.jsp Ё㉫ԧᄫᰒ⼎ҷⷕ䚼ߚDŽ 2.3.3 ᅲ䆁 㦋প⫼᠋⬭㿔᭄ 䆁㒗㽕⚍˖request ᇍ䈵ⱘՓ⫼DŽ 䳔∖䇈ᯢ˖⬭㿔ㅵ⧚㋏㒳Ёˈ⫼᠋㽕থ㸼⬭㿔ˈ䇋㓪ݭᑣ㦋পᑊ义䴶Ёᰒ⼎⫼᠋ᦤ Ѹⱘ⬭㿔᭄ˈ㋏㒳䖤㸠ᬜᵰབ 2-6 2-7 ᠔⼎DŽ 2-6 ⬭㿔义䴶 2-7 ᰒ⼎⬭㿔义䴶 ᅲ⦄ᗱ䏃˖㓪ݭ⬭㿔 JSP 义䴶˗㓪ݭᰒ⼎⬭㿔 JSP 义䴶˄㦋প⬭㿔义䴶㸼ऩ䕧ܹⱘֵᙃ ᑊᰒ⼎˅DŽ Ǐ䯂乬ᓩܹǐ Փ⫼ JSP ໘⧚ᅶ᠋ッ䇋∖ᯊϔ㠀䙉ᕾ䖭ḋϔ⾡ᓣ˖佪ܜˈ⫼᠋䗮䖛㸼ऩӊ䕧ܹᑊᦤ Ѹֵᙃᑣ䗮䖛䇋∖খ᭄ᮍᓣᦤѸֵᙃ˗ⴔˈJSP 义䴶㦋ᕫᅶ᠋ッⱘ䇋∖᭄ᑊ䖯㸠໘⧚˗ ᳔ৢˈJSP 义䴶ḍ໘⧚㒧ᵰ䕀ϡৠⱘ㒧ᵰ义䴶DŽ㦋পᅶ᠋ッ䇋∖ֵᙃ៥ӀՓ⫼ request ᇍ 䈵ⱘ getParameter ᮍ⊩ getParameterValues ᮍ⊩ˈ䙷Мབԩᅲ⦄义䴶䕀ਸ਼˛
͊Ҭپ ࠄဘᮆ᭧ᣁ
Ǐᅲ⦄ᗱ䏃ǐ JSP ЁৃҹՓ⫼䞡ᅮঞ䕀থᮍᓣᴹᅲ⦄义䴶䕀DŽ 2.4.1 䕀থϢ䞡ᅮ 䕀থㅔऩഄ䇈ህᰃ䗮䖛ϔϾЁҟᇚ⬆ᮍⱘ䇋∖Ӵ䗦㒭ЭᮍDŽҢᑣ䖤㸠ⱘ㾦ᑺ㾷ㄨህᰃᔧ ᅶ᠋ッথ䗕ϔϾ䇋∖ࠄ᳡ࡵ఼ৢˈWeb ᳡ࡵ఼䇗⫼ݙ䚼ⱘᮍ⊩ᆍ఼ݙ䚼ᅠ៤䇋∖໘⧚䕀থ ࡼˈ✊ৢᇚⳂᷛ䌘⑤থ䗕㒭⌣㾜఼ˈᭈϾ䖛䛑ᰃϔϾ Web ᆍ఼ݙᅠ៤ˈ㗠ৃҹ݅ѿrequest㣗ೈݙⱘ᭄DŽ㗠ᇍѢࠄᅶ᠋ッˈϡㅵ᳡ࡵ఼ݙ䚼བԩ໘⧚ˈЎ⌣㾜఼䛑াᰃᦤѸњ ϔϾ䇋∖ˈ㗠ᅶ᠋ッⱘ URL ഄഔϡӮথ⫳ᬍবDŽՓ⫼ request ⱘ getRequestDispatcher()ᮍ⊩ৃ ҹᅲ⦄䕀থˈ䗮䖛䕀থ㛑Ͼ义䴶ѸѦ䖛Ёᅲ⦄䇋∖᭄ⱘ݅ѿDŽ Փ⫼ response ᇍ䈵ⱘ sendRedirect()ᮍ⊩ৃҹᅲ⦄䞡ᅮDŽ䞡ᅮᰃᣛᅶ᠋ッ䞡ᮄ᳡ࡵ ఼䇋∖ϔϾഄഔ䫒ˈ⬅Ѣᰃথ䗕ᮄⱘ䇋∖ˈ㗠Ϟ䇋∖Ёⱘ᭄ᇚ䱣П϶༅DŽ⬅Ѣ᳡ࡵ఼ 䞡ᮄᅮњ URLˈ㗠ᅶ᠋ッ⌣㾜఼Ёᰒ⼎ⱘᰃᮄⱘ URL ഄഔˈ᠔ҹ䞡ᅮৃҹ⧚㾷Ўᰃ ⌣㾜఼㟇ᇥᦤѸњϸ䇋∖DŽ 䕀থ䞡ᅮ䛑㛑ᅲ⦄义䴶ⱘ䏇䕀ˈᅗӀⱘऎ߿བ㸼 2-3 ᠔⼎DŽ 㸼 2-3 䕀থ䞡ᅮⱘऎ߿ ৡ⿄ Փ⫼ⱘᇍ䈵 থ⫼ⱘԡ㕂 ഄഔᷣᚙމ ᭄݅ѿ 䞡ᅮ response ᅶ᠋ッ ᰒ⼎䕀ৢⱘഄഔ ϡ݅ѿ request 㣗ೈݙⱘ᭄ 䕀থ request ᳡ࡵ఼ッ ϡᰒ⼎Ⳃᷛഄഔ ݅ѿ request 㣗ೈݙⱘ᭄ 2.4.2 Փ⫼ response ᇍ䈵ᅲ⦄䞡ᅮ
responseᇍ䈵⫼Ѣડᑨᅶ᠋䇋∖ᑊᅶ᠋ッ䕧ߎֵᙃˈsendRedirect ()ᮍ⊩ᰃ response ᇍ䈵 ᳔ᐌ⫼ⱘᮍ⊩ˈ⫼ᴹᇚ䇋∖䞡ᅮࠄϔϾϡৠⱘ URL ϞDŽsendRedirect ()ᮍ⊩ⱘ䇁⊩ḐᓣЎ˖ response.sendRedirect(String path); path˖⫼ѢᣛᅮⳂᷛ䏃ᕘˈৃҹᰃⳌᇍ䏃ᕘˈгৃҹᰃϡৠЏᴎⱘ݊Ҫ URL ഄഔDŽ Ǐ՟ 2.5ǐᢳ⫼᠋ⱏᔩˈⱏᔩ៤ࡳ䏇䕀ࠄ䖢义䴶ˈⱏᔩ༅䋹䏇䕀ࠄⱏᔩ义䴶DŽ ᅲ⦄བϟ˖ ˄1˅㓪ݭ login.jsp 义䴶ˈࣙⱏᔩ㸼ऩˈ㸼ऩ᭄ᦤѸࠄ dologin.jsp 义䴶ˈབ 2-8 ᠔⼎DŽ ⏙ऩ 2-6 login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>⫼᠋ⱏᔩ</title> </head> <body> 䇋䕧ܹ⫼᠋ৡᆚⷕ˖
<form action="dologin.jsp" method="post"> ⫼᠋ৡ˖<input type="text" name="uname"><br>
ᆚ ⷕ˖<input type="password" name="pwd"><br> <input type="submit" value="ⱏᔩ"><input type="reset" value="䞡㕂"> </form>
</body> </html>
˄2˅㓪ݭ dologin.jsp 义䴶ˈ⫼ᴹ㦋পⱏᔩ㸼ऩЁⱘ᭄ˈᑊ偠䆕⫼᠋ৡᆚⷕˈḍ偠 䆕ⱘ㒧ᵰ䖯㸠䏇䕀DŽ
⏙ऩ 2-7 dologin.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>ⱏᔩ໘⧚</title> </head> <body> <%request.setCharacterEncoding("utf-8"); String name=request.getParameter("uname"); String pwd=request.getParameter("pwd");
if(name.equals("ᓴϝ")&&pwd.equals("123")) response.sendRedirect("welcome.jsp"); else response.sendRedirect("login.jsp");
%> </body> </html>
⏙ऩ 2-8 welcome.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>ⱏᔩ៤ࡳ</title> </head> <body> <%String name=request.getParameter("uname"); %> 䖢<%=name %>ʽ </body> </html> ᔧ䕧ܹℷ⹂ⱘ⫼᠋ৡঞᆚⷕᯊˈᴀḜ՟ⱘ䖤㸠ᬜᵰབ 2-9 ᠔⼎DŽৃ㾕䞡ᅮᰒ⼎䕀ৢ ⱘഄഔˈԚϡ݅ѿ request 㣗ೈݙⱘ᭄DŽ 2-8 login.jsp 义䴶 2-9 welcome.jsp 义䴶 2.4.3 Փ⫼ request ᇍ䈵ᅲ⦄䕀থ Փ⫼ request ⱘ getRequestDispatcher()ᮍ⊩ৃᅲ⦄䕀থDŽ䗮䖛䕀থ㛑Ͼ义䴶ѸѦ䖛
Ёᅲ⦄䇋∖᭄ⱘ݅ѿDŽ
Ǐ՟ 2.6ǐׂᬍ dologin.jspˈՓ⫼䕀থᮍᓣᅲ⦄՟ 2.5 ⱘࡳ㛑DŽ ҙ䳔ׂᬍ՟ 2.5 Ёⱘ dologin.jsp ҷⷕˈབ⏙ऩ 2-9 ᠔⼎DŽ
⏙ऩ 2-9 ׂᬍৢⱘ dologin.jsp ҷⷕ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>ⱏᔩ໘⧚</title> </head> <body> <%request.setCharacterEncoding("utf-8"); String name=request.getParameter("uname"); String pwd=request.getParameter("pwd");
if(name.equals("ᓴϝ")&&pwd.equals("123")) request.getRequestDispatcher("welcome.jsp"). forward(request,response); else response.sendRedirect("login.jsp"); %> </body> </html> ᔧ䕧ܹℷ⹂ⱘ⫼᠋ৡঞᆚⷕᯊˈᴀḜ՟ⱘ䖤㸠ᬜᵰབ 2-10 ᠔⼎DŽৃ㾕䕀থϡᰒ⼎䕀 ৢⱘഄഔˈԚ݅ѿ request 㣗ೈݙⱘ᭄DŽ 2-10 Փ⫼䕀থৢⱘ䖢义䴶 2.4.4 ᅲ䆁 ⣰᭄␌៣ 䆁㒗㽕⚍˖request response ᇍ䈵ⱘՓ⫼DŽ 䳔∖䇈ᯢ˖㓪ݭ JSP ᑣˈᅲ⦄⣰᭄ࡳ㛑DŽ㋏㒳䱣ᴎ⫳៤ϔϾ 1̚100 П䯈ⱘᭈ᭄ˈ㽕∖ ⫼᠋䕧ܹḚЁ䕧᭄ܹ䖯㸠␌៣ˈḍ߸ᮁⱘ㒧ᵰ䕀ϡৠⱘ义䴶ˈ㢹≵⣰ᇍˈ㒻㓁⣰᭄DŽ㋏ 㒳䖤㸠ᬜᵰབ 2-11 㟇 2-14 ᠔⼎DŽ
2-11 ⣰᭄␌៣佪义 2-12 ⣰ᇣњ义䴶 2-13 ⣰њ义䴶 2-14 ⣰ᇍњ义䴶 ᅲ⦄ᗱ䏃˖ᅲ⦄䆹␌៣ࡳ㛑䳔㽕 5 Ͼ义䴶˖ guess.jsp义䴶˖ᬜᵰབ 2-11 ᠔⼎ˈℸ义䴶Ё⫳៤䱣ᴎᭈ᭄ (int)(Math.random()*100)+1ˈ 䗮䖛㸼ऩӴ䗦ℸ䱣ᴎᭈ᭄ࠄ݊Ҫ义䴶ЁDŽ control.jsp义䴶˖㦋প guess.jsp 义䴶䕧ܹⱘ᭄ˈৠӴ䗦䖛ᴹⱘ䱣ᴎ᭄↨䕗ˈ䕀ϡৠ ⱘ义䴶DŽ ok.jsp义䴶˖ᬜᵰབ 2-14 ᠔⼎DŽ smaller.jsp义䴶˖ᬜᵰབ 2-12 ᠔⼎DŽ larger.jsp义䴶˖ᬜᵰབ 2-13 ᠔⼎DŽ control.jspǃsmaller.jsp larger.jsp 䖭ѯ义䴶䯈݅ѿ䇋∖᭄˄䱣ᴎ᭄˅DŽ Ǐ䯂乬ᓩܹǐ ᆊৃ㛑㒣ᐌ⺄ࠄ䖭ḋⱘ䯂乬ˈ↨བ៥ӀՓ⫼ⱒᑺ᭛ᑧᯊˈᔧᛇϟ䕑ᶤ᭛ḷᯊˈ㋏㒳 Ӯ㞾ࡼ䕀ܹⱏᔩ义䴶ˈᦤ⼎⫼᠋ⱏᔩৢᠡ㛑ϟ䕑DŽᔧ✊ˈབᵰᰃᏆⱏᔩ⫼᠋ˈህϡӮ䴶Ј䖭ḋ ⱘ䯂乬њDŽ䙷Мˈ㔥㒰ᑨ⫼㋏㒳ᰃབԩ߸ᮁ⫼᠋ᰃ৺Ꮖ㒣ⱏᔩ䖛ⱘਸ਼˛гህᰃ䇈ˈ㋏㒳བԩᅲ ⦄ᇍ㔥キⱘ䆓䯂ࠊਸ਼˛
͊Ҭ̋ ࠄဘ᫈҄
Ǐᅲ⦄ᗱ䏃ǐ 䗮ᐌᚙމϟˈ⫼᠋ⱏᔩৢⱘᭈϾ䆓䯂䖛䛑Ӯ⫼ࠄ⫼᠋ⱏᔩֵᙃˈJSP ⱘ session ᇍ䈵㛑ϔ↉ᯊ䯈ݙֱᄬ⫼᠋ⱘⱏᔩֵᙃˈ᠔ҹ䗮ᐌӮ⫼᠋ⱏᔩПৢᡞ⫼᠋ֵᙃֱᄬ session ЁDŽ 㗠݊Ҫ义䴶Ё䆓䯂 session Ёⱘ⫼᠋ֵᙃˈҢ㗠ᅲ⦄䆓䯂ࠊDŽ 2.5.1 䆓䯂ࠊ⌕ ㋏㒳䖯㸠䆓䯂ࠊ᳝ҹϟϸ⾡ᚙᔶ˖ ⫼᠋䗮䖛ⱏᔩ义䴶ⱏᔩ㔥キˈབᵰ䆹⫼᠋ᰃᏆ⊼ݠ⫼᠋ˈ㋏㒳Ӯֱᄬ䆹⫼᠋ⱘⱏᔩֵ ᙃˈᑊ䅽⫼᠋䖯ܹ݊℆䆓䯂ⱘ义䴶DŽ ⫼᠋Ⳉ䆓䯂㔥キⱘᶤϾ义䴶ˈ㋏㒳Ӯএᶹ䆶ᰃ৺ֱᄬ᳝䆹⫼᠋ⱘⱏᔩֵᙃˈབᵰ᳝ˈ ߭ᰒ⼎䆹义䴶ⱘݙᆍ˗བᵰ≵᳝ˈህ䕀ܹⱏᔩ义䴶ˈ㽕∖⫼᠋ⱏᔩ㔥キDŽ HTTP ण䆂ᰃϔ⾡᮴⢊ᗕⱘण䆂ˈгህᰃ䇈ˈᅗϡ㛑᳝ᬜഄ䆄ᔩᭈϾ䆓䯂䖛Ёⱘϔѯ⢊ ᗕDŽJSP ᦤկњϔ༫Ӯ䆱䎳䏾ᴎࠊˈ䆹ᴎࠊৃҹ㓈ᣕ↣Ͼ⫼᠋ⱘӮ䆱ֵᙃˈৃҹЎϡৠⱘ⫼᠋ֱ ᄬϡৠⱘ᭄DŽᇍ Web ᓔথᴹ䇈ˈϔϾӮ䆱ህᰃ⫼᠋䗮䖛⌣㾜఼Ϣ᳡ࡵ఼П䯈䖯㸠ⱘϔ䗮䆱ˈ ᅗࣙ⌣㾜఼Ϣ᳡ࡵ఼П䯈ⱘ䇋∖ǃડᑨ䖛DŽᔧ⌣㾜఼݇䯁ᯊˈⳌᑨⱘ⫼᠋Ӯ䆱㒧ᴳDŽ 2.5.2 Փ⫼ session ᇍ䈵ֱᄬֵᙃ JSPЁˈsession ݙ㕂ᇍ䈵⫼ᴹᄬټ᳝݇⫼᠋Ӯ䆱ⱘ᠔ֵ᳝ᙃˈϔϾ⫼᠋ᇍᑨϔϾ sessionˈ ᑊϨ䱣ⴔ⫼᠋ⱘ⾏ᓔ session ЁⱘֵᙃгӮ⍜༅DŽ䆓䯂ࠊህᰃՓ⫼ session ᇍ䈵ᅠ៤ⱘDŽ sessionᇍ䈵ⱘ setAttribute()ᮍ⊩⫼ᴹֱᄬ⫼᠋ֵᙃˈ݊䇁⊩ḐᓣЎ˖
session.setAttribute(String key,Object value);
key㸼⼎䬂ˈvalue 㸼⼎ؐˈvalue ᖙ乏ᰃϔϾ Object ㉏ൟˈ䆹ᮍ⊩㸼⼎ҹ䬂/ؐⱘᮍᓣᇚϔ Ͼᇍ䈵ⱘؐᄬᬒࠄ session ЁএDŽ Ǐ՟ 2.7ǐձ䆓䯂ࠊ⌕ᅠ՟ 2.5 Ёⱘ⫼᠋ⱏᔩҷⷕˈ⫼᠋ⱏᔩ៤ࡳৢֱᄬ⫼᠋ֵ ᙃ˄⫼᠋ৡᆚⷕ˅DŽ ᅲ⦄བϟ˖ ˄1˅㓪ݭ User ㉏ˈ䆹㉏ entity ࣙϟˈ⫼Ѣᄬᬒ⫼᠋ৡঞᆚⷕDŽ ⏙ऩ 2-10 entity.User.java package entity;
public class User { private String name; private String password; public String getName() {
return name; }
public void setName(String name) { this.name = name;
}
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password;
} }
˄2˅㓪ݭ login.jsp 义䴶ˈЎⱏᔩ义䴶DŽ
⏙ऩ 2-11 login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>⫼᠋ⱏᔩ</title> </head> <body> 䇋䕧ܹ⫼᠋ৡᆚⷕ˖
<form action="dologin.jsp" method="post"> ⫼᠋ৡ˖<input type="text" name="uname"><br>
ᆚ ⷕ˖<input type="password" name="pwd"><br> <input type="submit" value="ⱏᔩ"><input type="reset" value="䞡㕂"> </form> </body> </html> ˄3˅㓪ݭ dologin.jsp 义䴶ˈЎⱏᔩ໘⧚义䴶ˈ⫼ᴹ䖯㸠ⱏᔩ偠䆕ˈձ䆓䯂ࠊ⌕ˈ 䳔㽕ᇚ៤ࡳⱏᔩⱘ⫼᠋ֵᙃᄬᬒ session Ёˈ✊ৢݡ䕀℆䆓䯂ⱘ welcome.jsp 义䴶DŽ ⏙ऩ 2-12 dologin.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="entity.*"%> <html> <head> <title>ⱏᔩ໘⧚</title> </head> <body> <%request.setCharacterEncoding("utf-8"); String name=request.getParameter("uname"); String pwd=request.getParameter("pwd"); User user=new User();
user.setName(name); //ᇚ⫼᠋ৡᇕ㺙 user Ё user.setPassword(pwd); //ᇚᆚⷕᇕ㺙 user Ё if(name.equals("ᓴϝ")&&pwd.equals("123")) {
//ᡞ user ᇍ䈵ᄬᬒࠄ session Ёএˈᅗᇍᑨⱘ䬂Ў loginuser session.setAttribute("loginuser",user); response.sendRedirect("welcome.jsp"); } else response.sendRedirect("login.jsp"); %> </body> </html>
2.5.3 Փ⫼ session ᇍ䈵㦋পֵᙃ
sessionᇍ䈵ⱘ getAttribute()ᮍ⊩⫼ᴹ㦋প session ᇍ䈵Ёᄬᬒⱘᇍ䈵ⱘؐˈ݊䇁⊩ḐᓣЎ˖
(㽕ᔎࠊ䕀ᤶⱘ㉏ൟ)session.getAttribute(String key); key 㸼⼎䬂ˈ䆹ᮍ⊩㸼⼎ҹ䬂ⱘᮍᓣ㦋প session ᇍ䈵Ёᄬᬒⱘᇍ䈵ⱘؐˈℸᮍ⊩ⱘ䖨ಲ ؐᰃϔϾ Objectˈᖙ乏㽕䖯㸠ᔎࠊ㉏ൟ䕀ᤶDŽ Ǐ՟ 2.8ǐձ䆓䯂ࠊ⌕ᅠ՟ 2.7ˈ㽕∖䴲ⱏᔩⱘ⫼᠋ϡ㛑䆓䯂℆䆓䯂ⱘ welcome.jsp 义䴶DŽ ᅲ⦄˖ҙ䳔ׂᬍ՟ 2.7 Ёⱘ welcome.jspˈࡴ⏙ऩ 2-13 Ёࡴ㉫ⱘҷⷕ䚼ߚDŽ ⏙ऩ 2-13 welcome.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="entity.*"%> <html> <head> <title>ⱏᔩ៤ࡳ</title> </head> <body> <%User user=(User)session.getAttribute("loginuser"); //㦋প⫼᠋ᇍ䈵 if(user==null)response.sendRedirect("login.jsp"); //ⱏᔩⱘᚙމ %> 䖢<%=user.getName() %>ʽ </body> </html> ⏙ऩ 2-13 Ёⱘ㉫ԧ䚼ߚेЎ߸ᮁ session ᰃ৺ֱᄬњ⫼᠋ⱏᔩֵᙃDŽsession াᄬټᏆⱏᔩ ⱘ⫼᠋ֵᙃDŽ㟇ℸˈ䆓䯂ࠊᏆᅲ⦄DŽ⦄ৃ䗮䖛ҹϟℹᴹ偠䆕䆓䯂ࠊⱘᬜᵰ˖ ˄1˅Ⳉ⌣㾜఼ഄഔᷣЁ䕧ܹ URLˈ䆓䯂 welcome.jsp 义䴶DŽ ˄2˅䗮䖛ⱏᔩ义䴶䖯ܹ welcome.jsp 义䴶DŽ ˄3˅䞡ᮄᓔਃϔϾ⌣㾜఼にষˈⳈ䆓䯂 welcome.jsp 义䴶DŽ 2.5.4 Ң session Ё⿏䰸ᣛᅮⱘᇍ䈵
ᇍѢᄬټ session Ӯ䆱Ёⱘᇍ䈵ˈབᵰᛇᇚ݊Ң session Ӯ䆱Ё⿏䰸ˈৃҹՓ⫼ session ᇍ䈵ⱘ removeAttribute()ᮍ⊩ˈ݊Ḑᓣབϟ˖ session.removeAttribute(String key); key 㸼⼎䬂ˈ䆹ᮍ⊩㸼⼎ҹ䬂ⱘᮍᓣ⿏䰸 session ᇍ䈵Ёᄬᬒⱘᇍ䈵ˈϔ㠀⫼⊼䫔ⱏᔩ ࡳ㛑ЁDŽ 2.5.5 ᅲ䆁 Ў⬭㿔ㅵ⧚㋏㒳ࡴ䆓䯂ࠊ 䆁㒗㽕⚍˖session ᇍ䈵ⱘՓ⫼DŽ 䳔∖䇈ᯢ˖⬭㿔ㅵ⧚㋏㒳ЁЎৢৄㅵ⧚义䴶ࡴ䆓䯂ࠊDŽ ᅲ⦄ᗱ䏃ঞ݇䬂ҷⷕ˖㓪ݭ doLogin.jsp 义䴶ˈᣝ✻䆓䯂ࠊ⌕䖯㸠ⱏᔩ໘⧚ˈՓ⫼
session ֱᄬ៤ࡳⱏᔩⱘ⫼᠋ᇍ䈵ˈݡ䕀ৢৄㅵ⧚义䴶˄admin.jsp˅ˈҷⷕখ㗗՟ 2.7˗ৢ ৄㅵ⧚义䴶㦋প session Ёⱘ⫼᠋ᇍ䈵ᑊ߸ᮁˈ㢹Ўぎ߭䖯㸠ⱏᔩˈ৺߭ᰒ⼎ৢৄㅵ⧚义䴶ݙ ᆍˈҷⷕখ㗗՟ 2.8DŽ Ǐ䯂乬ᓩܹǐ 㔥キϞ㒣ᐌৃҹ㾕ࠄ㔥义䅵఼᭄ˈ⫼ᴹ㒳䅵㔥义㹿⫼᠋䆓䯂ⱘ᭄ˈ៥Ӏгᴹ㒭⬭㿔 ㅵ⧚㋏㒳ࡴ㔥义䅵఼᭄ࡳ㛑ˈ䆹བԩᅲ⦄ਸ਼˛
͊ҬО ҄ͻᎪᮆᝠ٨
Ǐᅲ⦄ᗱ䏃ǐ 乍ⳂᓔথЁ㒣ᐌՓ⫼ application ᇍ䈵ᅲ⦄㔥义䅵఼᭄ˈapplication ᇍ䈵ᰃ JSP ⱘݙ㕂ᇍ 䈵ˈᅗ㉏ԐѢ㋏㒳ⱘܼሔব䞣ˈ⫼Ѣᅲ⦄⫼᠋П䯈ⱘ᭄݅ѿDŽ 2.6.1 application ᇍ䈵 applicationᇍ䈵⫼Ѣֱᄬ᠔᳝ᑨ⫼ᑣЁⱘ᭄᳝݀DŽᅗ᳡ࡵ఼ਃࡼᯊ㞾ࡼ߯ᓎˈ᳡ ࡵ఼ذℶᯊ䫔↕DŽϢ session ᇍ䈵ϡৠⱘᰃˈ JSP ᳡ࡵ఼䖤㸠ᯊˈҙ᳝ϔϾ application ᇍ䈵ˈ ᔧ application ᇍ䈵≵᳝㹿䫔↕ᯊˈ᠔᳝⫼᠋䛑ৃҹ݅ѿ䆹 application ᇍ䈵DŽϢ session ᇍ䈵Ⳍ ৠⱘᰃˈapplication ᇍ䈵г᳝ setAttribute getAttribute ᮍ⊩DŽ2.6.2 ᑨ⫼ application ᇍ䈵ᅲ⦄㔥义䅵఼᭄
↣䆓䯂义䴶ᯊˈܜ㦋প application ᇍ䈵Ёֱᄬⱘ䆓䯂᭄DŽབᵰ≵᳝㦋পࠄˈ㸼⼎义䴶 㹿ϔ䆓䯂ˈᇚ᭄ᄫ 1 ֱᄬࠄ application ᇍ䈵Ё˗བᵰ㦋পࠄњˈ߭ᇚ䆓䯂᭄ 1ˈݡ ᄬټࠄ application ᇍ䈵Ёˈԧҷⷕབ⏙ऩ 2-14 ᠔⼎DŽ
⏙ऩ 2-14 application.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>㔥义䅵఼᭄</title> </head> <body> <% int num=0; //ᅮНϔϾֱᄬ䆓䯂᭄ⱘব䞣 if(application.getAttribute("number")==null){//ᔧ⫼᠋ϔ䆓䯂ᯊ num=1; } else { num=Integer.parseInt(application.getAttribute("number").toString());
num=num+1; //䆓䯂᭄ࡴ 1 } out.println("䆹义䴶Ꮖ㹿⌣㾜њ"+num+"ʽ"); application.setAttribute("number",num); %> </body> </html>
വڱ̄࠵ፇ
1ˊࡼᗕ㔥义ⱘᓔথЁˈHTML 㸼ऩᰃϢ⫼᠋ѸѦֵᙃⱘЏ㽕↉DŽ 2ˊՓ⫼ JSP ໘⧚㸼ऩ䇋∖ᯊˈϔ㠀䙉ᕾ䖭ḋϔ⾡ᓣ˖ ˄1˅⫼᠋䗮䖛㸼ऩӊ䕧ܹᑊᦤѸֵᙃDŽ ˄2˅JSP 义䴶㦋প㸼ऩ᭄ˈ䖯㸠䘏䕥໘⧚DŽ ˄3˅JSP 义䴶ḍ໘⧚㒧ᵰ䕀ϡৠⱘ㒧ᵰ义䴶DŽ 3ˊ᠔䇧ݙ㕂ᇍ䈵ህᰃ⬅ Web ᆍ఼ࡴ䕑ⱘϔ㒘㉏ⱘᅲ՟ˈᅗϡڣϔ㠀ⱘ Java ᇍ䈵䙷ḋ⫼ newএ㦋পᅲ՟ˈ㗠ᰃৃҹⳈ JSP 义䴶ЁՓ⫼ⱘᇍ䈵DŽ 4ˊᐌ⫼ⱘݙ㕂ᇍ䈵ˈབ㸼 2-4 ᠔⼎DŽ 㸼 2-4 ᐌ⫼ݙ㕂ᇍ䈵 ৡ⿄ 䇈ᯢ ᐌ⫼ᮍ⊩out ⫼Ѣᅶ᠋ッ䕧ߎ᭄ printlnǃprint
request ⫼Ѣᅶ᠋ッⱘ䇋∖໘⧚ getParameterǃgetParameterValuesǃ setCharacterEncodingǃgetRequestDispatcher response ⫼Ѣડᑨᅶ᠋䇋∖ᑊᅶ᠋ッ䕧ߎֵᙃ setCharacterEncodingǃsendRedirect
session ⫼ᴹᄬټ᳝݇⫼᠋Ӯ䆱ⱘ᠔ֵ᳝ᙃ setAttributeǃgetAttributeǃremoveAttributeǃ invalidate
application ㉏ԐѢ㋏㒳ⱘܼሔব䞣ˈ⫼Ѣᅲ⦄⫼᠋П䯈
ⱘ᭄݅ѿ setAttributeǃgetAttribute
5ˊ䆓䯂ࠊ⌕ˈབ 2-15 2-16 ᠔⼎DŽ
2-16 䆓䯂ࠊ⌕˄2˅
ህ Web ᓔথᴹ䇈ˈϔϾӮ䆱ህᰃ⫼᠋䗮䖛⌣㾜఼Ϣ᳡ࡵ఼П䯈ⱘϔ䗮䆱ˈᅗࣙ⌣㾜 ఼Ϣ᳡ࡵ఼П䯈ⱘሖ䇋∖ǃડᑨ䖛DŽ
˸ᮥ̄
ϔǃ฿ぎ乬
1ˊJSP Ёᐌ⫼ⱘݙ㕂ᇍ䈵᳝ request ᇍ䈵ǃresponse ᇍ䈵ǃsession ᇍ䈵ǃapplication ᇍ䈵ǃ outᇍ䈵ㄝˈ݊Ё ᇍ䈵ⱘ⫳ੑ਼ᳳЎ⫼᠋䆓䯂䖛ˈ ᇍ䈵ⱘ⫳ੑ਼ ᳳЎキ⚍䖤㸠ⱘܼ䖛ˈ ᇍ䈵ࣙњϔ䇋∖Ёⱘ᠔ֵ᳝ᙃˈ ᇍ 䈵ࣙњડᑨ䇋∖ⱘ᠔ֵ᳝ᙃˈ ᇍ䈵⫼Ѣ䕧ߎ݊Ҫᇍ䈵ֵᙃDŽ
2ˊᅶ᠋ッ䗮䖛㸼ऩ Form ᳡ࡵ఼ᦤѸ᭄᳝ϸ⾡ᮍ⊩˖ DŽ 3ˊ䗮䖛䇗⫼ request ᇍ䈵ⱘ getParameter ᮍ⊩䖨ಲⱘ᭄㉏ൟЎ ˈ䗮䖛䇗 ⫼ session ᇍ䈵ⱘ getAttribute ᮍ⊩䖨ಲⱘ᭄㉏ൟЎ ˈ䗮䖛䇗⫼ application ᇍ 䈵ⱘ getAttribute ᮍ⊩䖨ಲⱘ᭄㉏ൟЎ DŽ 4ˊpage ᣛҸⱘ ሲᗻᣛᯢᛇ㽕ᓩܹⱘࣙ㉏DŽ 5ˊ ᣛҸৃ⫼ѢࣙϔϾ᭛ӊDŽ Ѡǃ䗝ᢽ乬 1ˊ JSP 义䴶Ёˈϟ߫˄ ˅㸼䖒ᓣ䇁হৃҹ㦋প义䴶䇋∖ЁৡᄫЎ title ⱘ᭛ᴀḚⱘ ݙᆍDŽ Aˊ<%=request.getParameter("title")%> Bˊ<%=request.getAttribute("title")%> Cˊ<%=request.getParameterValues("title")%> Dˊ<%=request.getParameters("title")%> 2ˊ⫼᠋ⱏᔩⱘ JSP 义䴶Ϟࣙབϟҷⷕ᠔⼎ⱘ㸼ऩˈ⫼᠋ᏠᳯᦤѸ㸼ऩᯊഄഔᷣЁ ϡᰒ⼎ᦤѸⱘֵᙃˈ߭ᑨ䆹ϟߦ㒓໘฿ݭⱘҷⷕᰃ˄ ˅DŽ
<form action="loginAction.jsp" name="loginForm" method="______"> ⫼᠋ৡ˖<input type="text" name="name"/><br>
ᆚⷕ˖<input type="password" name="pwd"/> <input type="submit" value="ⱏᔩ"/> </form>
Aˊget Bˊpost
Cˊϡ฿ݭӏԩݙᆍ DˊҹϞ䗝乍ഛৃ
3ˊ JSP Ёˈ㽕 page ᣛҸЁ䆒㕂Փ⫼ⱘ㛮ᴀ䇁㿔ᰃ JavaˈϨᇐܹњ java.io java.util ࣙˈϟ߫䇁হЁℷ⹂ⱘᰃ˄ ˅DŽ
Aˊ<%@ page language="java" import="java.io.*,java.util.*"%> Bˊ<%@ page language="java" import="java.io, java.util "%>
Cˊ<%@ page language="java" import="java.io" import="java.util"%> Dˊ<%@ page language="java"%>
<%@ page import="java.io.*,java.util.*"%>
4ˊ䆩䖤㸠བϟ JSP ҷⷕˈҹϟ䇈⊩ℷ⹂ⱘᰃ˄ ˅DŽ
<html> <%
String str="hello ACCP"; session.setAttribute("title",str); String getStr=session.getAttribute("title"); out.println(getStr); %> </html> Aˊ䖤㸠៤ࡳˈ义䴶Ϟ䕧ߎ hello ACCP Bˊ䖤㸠៤ࡳˈ义䴶Ϟ䕧ߎ title Cˊҷⷕ㸠 session.setAttribute("title",str);᳝䫭䇃ˈ᮴⊩䖤㸠 Dˊҷⷕ㸠 String getStr=session.getAttribute("title");᳝䫭䇃ˈ᮴⊩䖤㸠 5ˊਃࡼ IE にষ䖤㸠བϟ JSPˈབᵰ䖲㓁ࠋᮄ 5 ˈ䕧ߎⱘ㒧ᵰᰃ Xˈ㋻ⴔ䞡ᮄਃࡼϔ Ͼᮄⱘ IE にষ䖤㸠䆹 JSPˈ䖲㓁ࠋᮄ 3 ˈ䕧ߎⱘ㒧ᵰᰃ YˈX Y ⱘؐߚ߿ᰃ˄ ˅DŽ <%@ page contentType="text/html;charset=GBK"%> <html> <% Integer cnt=(Integer)application.getAttribute("hitcount ") ; if(cnt= =null){ cnt=new Integer(1); }else{ cnt=new Integer(cnt.intValue()+1); } application.setAttribute("hitcount",cnt); %> <%=cnt%> </html>
Aˊ5ǃ8 Bˊ5ǃ3 Cˊ1ǃ2 Dˊ1ǃ1 6ˊJSP ᦤկњϔϾৃҹϾ䇋∖П䯈ᣕ㓁᳝ᬜⱘݙ㕂ᇍ䈵˄ ˅ˈ䆹ᇍ䈵Ϣ⌣㾜఼ϔ ϔᇍᑨDŽ Aˊrequest Bˊresponse Cˊsession Dˊapplication
7ˊ helloapp ᑨ⫼Ё᳝ϔϾ hello.jspˈᅗⱘ᭛ӊ䏃ᕘЎ WebRoot/hello/hello.jspˈ䙷М ⌣㾜఼ッ䆓䯂 hello.jsp ⱘ URL ᰃ˄ ˅DŽ Aˊhttp://localhost:8080/hello.jsp Bˊhttp://localhost:8080/helloapp/hello.jsp Cˊhttp://localhost:8080/helloapp/hello/hello.jsp Dˊhttp://localhost:8080/hello/hello.jsp 8ˊҢ HTTP 䇋∖Ё㦋ᕫ䇋∖খ᭄ˈᑨ䆹䇗⫼˄ ˅DŽ Aˊrequest ᇍ䈵ⱘ getAttribute()ᮍ⊩ Bˊrequest ᇍ䈵ⱘ getParameter()ᮍ⊩ Cˊsession ᇍ䈵ⱘ getAttribute()ᮍ⊩ Dˊsession ᇍ䈵ⱘ getParameter()ᮍ⊩
9ˊ helloapp ᑨ⫼Ё hello.jsp welcome.jsp ৠϔⳂᔩЁˈindex.jsp ᑨ⫼ⱘḍⳂᔩЁˈ index.jsp Փ⫼ϟ䴶ⱘҷⷕৃҹ䏇䕀ࠄ hello.jsp 义䴶˖request.getRequestDispatcher("/hello.jsp"). forward(request,response);ˈ⫼ϟ߫ᮍᓣЁⱘ˄ ˅ҷ᳓Ϟ䗄ҷⷕৢৃҹ䏇䕀ࠄ welcome.jsp 义䴶DŽ Aˊresponse.sendRedirect("/helloapp/welcome.jsp"); Bˊresponse.sendRedirect("helloapp/welcome.jsp"); Cˊresponse.sendRedirect("welcome.jsp"); Dˊresponse.sendRedirect("/welcome.jsp"); 10ˊϟ䴶݇Ѣ JSP ⫼ඳᇍ䈵ⱘ䇈⊩䫭䇃ⱘᰃ˄ ˅DŽ Aˊrequest ᇍ䈵ৃҹᕫࠄ䇋∖Ёⱘখ᭄ Bˊsession ᇍ䈵ৃҹֱᄬ⫼᠋ֵᙃ Cˊapplication ᇍ䈵ৃҹ㹿Ͼᑨ⫼݅ѿ Dˊ⫼ඳ㣗ೈҢᇣࠄᰃ requestǃsessionǃapplication
ϝǃ㓪乬 1ˊ㓪ݭ䴭ᗕ义䴶⫼Ѣ䕧ܹᑈӑˈ㓪ݭ JSP ⫼Ѣ߸ᮁ䆹ᑈᰃ৺ᰃ䯄ᑈDŽ 2ˊ㓪ݭϔϾ JSP 义䴶ˈ㽕∖ᦤկϔϾࣙ㘠Ϯৡ⿄ⱘϟᢝ߫㸼Ḛˈ䅽⫼᠋䗝ᢽ݊㘠Ϯˈ ᦤѸৢˈ߸ᮁ⫼᠋ⱘ㘠Ϯᰃ৺ᰃए⫳ˈབᵰᰃˈ߭䏇䕀䖯ܹϔϾ䖢义䴶˗བᵰϡᰃˈ߭义 䴶Ϟᰒ⼎䆹⫼᠋ⱘ㘠ϮDŽ 3ˊ㓪ݭϔϾ JSP 义䴶 luncknum.jspˈѻ⫳ 0̚9 П䯈ⱘ䱣ᴎ᭄Ў⫼᠋ᑌ䖤᭄ᄫˈᇚֱ݊ ᄬࠄӮ䆱Ёˈᑊ䞡ᅮࠄϔϾ义䴶 shownum.jsp Ёˈ䆹义䴶Ёᇚ⫼᠋ⱘᑌ䖤᭄ᄫᰒ⼎ߎᴹDŽ ᦤ⼎˖Math ㉏ⱘ random()ᮍ⊩⫳៤ 0.0̚1.0 П䯈ⱘ䱣ᴎ᭄DŽ