(1) 创建项目01JavaWeb03, 01学号 web project, Java EE 5.0
(2) 创建首页index.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <%@ page language= "java" pageEncoding= "GBK" %> < html > < head > < title >第3章 应用JSP技术开发动态网站(杜老师)</ title > </ head > < body > < h1 >第3章 应用JSP技术开发动态网站(杜老师)</ h1 > < hr /> < span >1. 开发一个JSP程序</ span >< br /> < a href = "HelloWorld01.jsp" >范例1. HelloWorld</ a >< br > < span >2. JSP基本语法</ span >< br /> < a href = "Comments1_01.jsp" >范例2. 注释: html注释</ a >< br > < a href = "Comments2_01.jsp" >范例3. 注释: jsp注释</ a >< br > < a href = "JSPScriptlets01.jsp" >范例4. JSP Scriptlets 脚本元素</ a >< br > < a href = "IncludeDemo01.jsp" >范例5. 包含(include)文件</ a >< br > < span >3. JSP动作指令</ span >< br /> < a href = "JSPIncludeDemo01.jsp" >范例6. 包含动作: 静态、动态文件</ a >< br > < a href = "JSPIncludeParamDemo01.jsp" > 包含动作(带参数): JSPIncludeParamDemo</ a >< br > < a href = "JSPForwardDemo01.jsp" > 转发动作: JSPForward</ a >< br > < a href = "JSPForwardParamDemo01.jsp" > 转发动作(带参数): JSPForwardParamDemo</ a >< br > < span >4. JSP主要内置对象</ span >< br /> < a href = "RequestScopeDemo01.jsp" >范例7. RequestScopeDemo01</ a >< br > < a href = "RequestForm01.html" >范例8. RequestForm</ a >< br > < a href = "ResponseDemo01.jsp" >范例9. ResponseDemo</ a >< br > < a href = "SessionDemo01.jsp" >范例10. SessionDemo</ a >< br > < a href = "ApplicationDemo01.jsp" >范例11. ApplicationDemo</ a >< br > < a href = "PageContextDemo01.jsp" >范例12. PageContextDemo</ a >< br > < span >5. JSTL标签库</ span >< br /> < a href = "ELDemo01.jsp" >范例13. ELDemo.jsp</ a >< br > < a href = "JSTLCoreDemo01.jsp" >范例14. JSTLCoreDemo</ a >< br > < a href = "JSTLFmtDemo01.jsp" >范例15. JSTLFmtDemo</ a >< br > < a href = "JSTLFnDemo01.jsp" >范例16. JSTLFnDemo</ a >< br > < span >6. 实训</ span >< br /> < a href = "loginForm01.jsp" >实训. 开发一个用户登录模块</ a >< br > < span >7. 上机题</ span >< br /> < a href = "PracticeDemo01.jsp" >习题1. for循环输出表格</ a >< br > < a href = "PracticeDemo02.jsp" >习题2. forEcho输出九九乘法表</ a >< br > < a href = "PracticeDemo03.jsp" >习题3. forEcho输出班级列表中所有学生信息</ a >< br > < a href = "PracticeDemo04.jsp" >习题4. 计算1到100之间的偶数和</ a >< br > < a href = "PracticeDemo05.jsp" >习题5. 页面自动刷新</ a >< br > < a href = "PracticeDemo06.jsp" >习题6. 简单计算器</ a >< br > < a href = "PracticeDemo07.jsp" >习题7. 百度搜索</ a >< br > < a href = "PracticeDemo08.jsp" >习题8. 多国语言页面</ a >< br > < a href = "PracticeDemo09.jsp" >习题9. 输入时间显示不同时区的时间</ a >< br > < a href = "PracticeDemo10.jsp" >习题10. 新闻列表</ a >< br > < hr /> < a href = "/html/01JavaWeb.html" >返回</ a >< br > </ body > </ html > |
1 |
(范例1) 创建页面WebRoot\HelloWorld01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title >Hello World! 你好,世界。</ title > </ head > < body > <% out.write( "Hello World! 你好,世界。" ); %> ... </ body > </ html > |
(范例2) 创建页面WebRoot\Comments1_01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > HTML注释 </ title > </ head > < body > <!-- html注释,在html网页源代码上显示 --> <% out.println( "Hello,World! HTML注释" ); %> ... </ body > </ html > |
(范例3) 创建页面WebRoot\Comments2_01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSP注释 </ title > </ head > < body > <% -- JSP注释 在html网页源代码不显示,输出Hello,World!语句 -- %> <% out.println( "Hello,World!你好。" ); %> ... </ body > </ html > |
(范例4) 创建页面WebRoot\JSPScriptlets01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSP 脚本元素: 声明变量, 表达式, 语句 </ title > </ head > < body > < h1 >JSP 脚本元素: 声明变量, 表达式, 语句(JSP Scriptlets实现)</ h1 > <%! int visit1 = 1 ; //声明变量visit1,初始值为1 int visit2 = 1001 ; //声明变量visit2,初始值为1 %> 你是本页面第 <%= visit1++ %> 个访客(JSP表达式实现)< br /> 你是本页面第 <% visit2++; out.println(visit2++); %> 个访客 </ body > </ html > |
(范例5) 创建页面WebRoot\IncludeDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > IncludeDemo </ title > </ head > < body > <%@ include file= "Included01.jsp" %> <% --导航部分,包含一个导航文件-- %> 本公司是一家以生成XXX为主的企业。 </ body > </ html > |
WebRoot\Include01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 | <%@ page language= "java" pageEncoding= "gbk" %> <% --导航页面 -- %> < p > < a href = "index.jsp" >首页</ a > | < a href = "blog.html" >博客</ a > | < a href = "email.html" >邮箱</ a > | < a href = "relation.html" >联系我们</ a > </ p > |
(范例6) 创建[包含动作: 静态、动态文件]页面WebRoot\JSPIncludeDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSP页面包含 </ title > </ head > < body > < h2 >包含静态文件</ h2 > < jsp:include page = "JSPIncluded01.txt" /> <% --动态的包含一个静态文件-- %> < h2 >包含动态文件</ h2 > < jsp:include page = "JSPIncluded01.jsp" /> <% --动态的包含一个动态文件-- %> </ body > </ html > |
WebRoot\JSPIncluded01.txt
1 2 3 | 我是文本文件,我被静态的包含进来了<br/> <%="当前时间为:" + new Date().toLocaleString()%><br/> |
WebRoot\JJSPIncluded01.jsp
1 2 3 4 | <%@ page language= "java" import = "java.util.*" pageEncoding= "gbk" %> 我是JSP文件,我被动态的包含进来了< br > <%= "当前时间为:" + new Date().toLocaleString() %> < br > |
创建[包含动作(带参数)]页面WebRoot\JSPIncludeParamDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSPIncludeParamDemo </ title > </ head > < body > <% response.setCharacterEncoding( "gbk" ); %> <% --动态的包含一个JSP文件,并传递参数-- %> <% -- 参数名为name,参数值xiaoxiao-- %> < jsp:include page = "JSPIncludeParamDemo2.jsp" > < jsp:param name = "name" value = "xiaoxiao笑笑" /> </ jsp:include > </ body > </ html > |
WebRoot\JSPIncludeParamDemo2.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSPIncludeParamDemo2 </ title > </ head > < body > <% --接受参数-- %> <% request.setCharacterEncoding( "gbk" ); String name = request.getParameter( "name" ); %> <% -- 输出参数值-- %> 被包含页面:name为 <%= name %> </ body > </ html > |
创建[转发动作: JSPForward]页面WebRoot\JSPForwardDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSP跳转Demo </ title > </ head > < body > <% --执行跳转,跳转到HelloWorld01.jsp -- %> < jsp:forward page = "HelloWorld01.jsp" /> </ body > </ html > |
创建[转发动作(带参数)]页面WebRoot\JSPForwardParamDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > JSPIncludeParamDemo </ title > </ head > < body > <% response.setCharacterEncoding( "gbk" ); %> <% --动态的包含一个JSP文件,并传递参数-- %> <% -- 参数名为name,参数值xiaoxiao-- %> < jsp:forward page = "JSPIncludeParamDemo2.jsp" > < jsp:param name = "name" value = "xiaoxiao笑笑" /> </ jsp:forward > </ body > </ html > |
(范例7) 创建[]页面WebRoot\RequestScopeDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > RequestScopeDemo01 </ title > </ head > < body > <% request.setAttribute( "姓名" , "二师兄" ); //保存name属性在request范围 request.setAttribute( "年龄" , "30" ); //保存age属性在request范围 request.setAttribute( "性别" , "男" ); //保存sex属性在request范围 %> <% --使用forward动作指令进行跳转,跳转到RequestScopeDemo02.jsp页面-- %> < jsp:forward page = "RequestScopeDemo2_01.jsp" ></ jsp:forward > </ body > </ html > |
WebRoot\RequestScopeDemo2_01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > 在request范围获得属性 </ title > </ head > < body > <% --在request范围获得属性-- %> <% String xm = (String)request.getAttribute( "姓名" ); //获得request范围name属性 String nl = (String)request.getAttribute( "年龄" ); String xb = (String)request.getAttribute( "性别" ); out.println( "姓名:" + xm + "<br/>" ); out.println( "年龄:" + nl + "<br/>" ); out.println( "性别:" + xb); %> </ body > </ html > |
(范例8) 创建[]页面WebRoot\RequestForm01.html, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < meta http-equiv = "content-type" content = "text/html; charset=gbk" /> < title >注册表单</ title > </ head > < body > < form action = "RequestDemo01.jsp" method = "post" > < table > < tr > < td >用户名</ td > < td >< input type = "text" name = "户名" /></ td > </ tr > < tr > < td >密码</ td > < td >< input type = "password" name = "密码" /></ td > </ tr > < tr > < td >确认密码</ td > < td >< input type = "password" name = "确认密码" /></ td > </ tr > < tr > < td >姓名</ td > < td >< input type = "text" name = "姓名" /></ td > </ tr > < tr > < td >年龄</ td > < td >< input type = "text" name = "年龄" /></ td > </ tr > < tr > < td >性别</ td > < td >< input type = "radio" name = "性别" value = "男" />男 < input type = "radio" name = "性别" value = "女" />女 </ td > </ tr > < tr > < td >< input type = "submit" value = "注册" ></ td > < td >< input type = "reset" value = "重置" ></ td > </ tr > </ table > </ form > </ body > </ html > |
WebRoot\RequestDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > RequestDemo </ title > </ head > < body > <% request.setCharacterEncoding( "gbk" ); //设置参数编码格式 String username = request.getParameter( "户名" ); //获得username参数值 String upassword = request.getParameter( "密码" ); //获得upassword参数值 String repassword = request.getParameter( "确认密码" ); //获得repassword参数值 String name = request.getParameter( "姓名" ); //获得name参数值 String age = request.getParameter( "年龄" ); //获得age参数值 String sex = request.getParameter( "性别" ); //获得sex参数值 %> 用户名: <%= username %> < br /> 密码: <%= upassword %> < br /> 确认密码: <%= repassword %> < br /> 姓名: <%= name %> < br /> 年龄: <%= age %> < br /> 性别: <%= sex %> </ body > </ html > |
(范例9) 创建[]页面WebRoot\ResponseDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <%@ page language= "java" pageEncoding= "gb2312" %> < html > < head > < title > ResponseDemo </ title > </ head > < body > < h1 >第3章 JSP</ h1 > < hr /> < P >将当前页面保存为word文档吗?</ P > <!-- HTML表单,页面提交到ResponseDemo.jsp --> < FORM action = "ResponseDemo01.jsp" method = "get" name = form > < INPUT TYPE = "submit" value = "yes2222" name = "t1" > < INPUT TYPE = "submit" value = "参数值" name = "t2" > < INPUT TYPE = "submit" value = "yes" name = "tijiao" > < INPUT TYPE = "submit" value = "no" name = "tijiao" > </ FORM > <% String str = request.getParameter( "tijiao" ); //获得submit参数值 if (str == null ){ //判断submit参数值是否为空 str= "" ; } if (str.equals( "yes" )){ //如果submit参数值为yes response.setContentType( "application/msword;charset=GB2312" ); //设置文件格式为word } if (str.equals( "no" )){ //如果submit参数值为no response.sendRedirect( "ResponseDemo01.jsp" ); //response的重定向 } String str1 = request.getParameter( "t2" ); //获得submit参数值 if (str1 == null ){ //判断submit参数值是否为空 str1= "" ; } %> <%= str1 %> </ body > </ html > |
(范例10) 创建[内在对象session]页面WebRoot\SessionDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > SessionDemo </ title > </ head > < body > < h1 >内在对象session</ h1 > <% long creatTime = session.getCreationTime(); //取得session生成的时间 out.println( "session生成的时间:" + creatTime + "<br/>" ); //输出session生成的时间 String sessionID = session.getId(); //取得session的ID out.println( "session的ID:" + sessionID+ "<br/>" ); //输出session的ID long lastTime = session.getLastAccessedTime(); //取得最后通过session发送请求时间 out.println( "最后通过session发送请求时间:" + lastTime+ "<br/>" ); //输出最后通过session发送请求时间 boolean isnew = session.isNew(); //判断session是不是新的 out.println( "是否为新的:" + isnew); //输出session是不是新的 %> </ body > </ html > |
(范例11) 创建[内在对象application]页面WebRoot\ApplicationDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > ApplicationDemo </ title > </ head > < body > < h1 >内在对象application</ h1 > <% int magorVersion = application.getMajorVersion(); //主要的Servlet API版本 int minorVersion = application.getMinorVersion(); //次要的Servlet API版本 String info = application.getServerInfo(); //服务器版本 String mimeStr = application.getMimeType( "ApplicationDemo01.jsp" ); //获得指定文件的MIME类型 ServletContext contextStr = application.getContext( "ApplicationDemo01.jsp" ); //获得指定Local的Application context String pathStr = application.getRealPath( "/" ); //获得指定path的绝对路径 %> <%= "主要的Servlet API版本:" + magorVersion %> < br /> <%= "次要的Servlet API版本:" + minorVersion %> < br /> <%= "服务器版本:" + info %> < br > <%= "文件的MIME类型:" + mimeStr %> < br /> <%= "Application context:" + contextStr %> < br /> <%= "绝对路径:" + pathStr %> </ body > </ html > |
(范例12) 创建[]页面WebRoot\PageContextDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > PageContextDemo </ title > </ head > < body > <% pageContext.setAttribute( "一把手" , "任总" ); //设置page范围name属性 request.setAttribute( "一把手" , "郝总" ); //设置request范围name属性 session.setAttribute( "一把手" , "袁总" ); //设置session范围name属性 application.setAttribute( "一把手" , "胡总" ); //设置application范围name属性 %> <% //获得page范围name属性 String pageStr = (String)pageContext.getAttribute( "一把手" ,pageContext.PAGE_SCOPE); //获得request范围name属性 String requestStr = (String)pageContext.getAttribute( "一把手" ,pageContext.REQUEST_SCOPE); //获得session范围name属性 String sessionStr = (String)pageContext.getAttribute( "一把手" ,pageContext.SESSION_SCOPE); //获得application范围name属性 String applicationStr = (String)pageContext.getAttribute( "一把手" ,pageContext.APPLICATION_SCOPE); %> <%= "page范围:[一把手]属性值: " + pageStr %> < br > <%= "request范围:[一把手]属性值: " + requestStr %> < br > <%= "session范围:[一把手]属性值: " + sessionStr %> < br > <%= "application范围:[一把手]属性值: " + applicationStr %> </ body > </ html > |
(范例13) 创建[使用EL]页面WebRoot\ELDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title >ELDemo</ title > </ head > < body > < table border = "1" > < tr > < td >运算</ td > < td >结果</ td > </ tr > < tr > <% --加法运算符-- %> < td >\${1 + 12}</ td > < td >${1 + 12}</ td > </ tr > < tr > <% --减法运算符-- %> < td >\${21 - 1}</ td > < td >${21 - 1}</ td > </ tr > < tr > <% --等于运算符-- %> < td >\${1 == 1}</ td > < td >${1 == 1}</ td > </ tr > < tr > <% --不等于运算符-- %> < td >\${1 != 1}</ td > < td >${1 != 1}</ td > </ tr > < tr > < td >\${6 >= 53}</ td > < td >${6 >= 53}</ td > </ tr > <% -- 逻辑运算符-- %> < tr > < td >\${true && true}</ td > < td >${true && true}</ td > </ tr > < tr > < td >\${true && false}</ td > < td >${true && false}</ td > </ tr > < tr > < td >\${4 > 2 ? "正确":"错误"}</ td > < td >${4 > 2 ? "正确":"错误"}</ td > </ tr > </ table > </ body > </ html > |
(范例14) 创建[使用JSTLCore]页面WebRoot\JSTLCoreDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <%@ page language= "java" import = "java.util.*" pageEncoding= "gbk" %> < html > < head > < title >JSTLCoreDemo核心标签库演示</ title > </ head > < body > <% ArrayList list = new ArrayList(); //线性表实例,用来存放军衔信息 list.add( "士官" ); //添加一个士官军衔 list.add( "少尉" ); //添加一个少尉军衔 list.add( "中尉" ); //添加一个中尉军衔 list.add( "上尉" ); //添加一个上尉军衔 pageContext.setAttribute( "list" ,list); //将list信息保存在page范围 %> < table border = "1" > < tr > < td >序号</ td > < td >名称</ td > </ tr > < c:forEach var = "军衔" items = "${pageScope.list}" varStatus = "变量状态" > < tr > < td >< c:out value = "${变量状态.index + 1}" ></ c:out ></ td > <% -- 显示列表序号 -- %> < c:choose > < c:when test = "${(变量状态.index + 1) % 2 == 0}" > <% -- 如果序号为偶数 -- %> < td bgcolor = "#CCCCCC" >< c:out value = "${军衔}" /></ td > </ c:when > < c:otherwise > < td >< c:out value = "${军衔}" /></ td > </ c:otherwise > </ c:choose > </ tr > </ c:forEach > </ table > </ body > </ html > |
(范例15) 创建[使用JSTLFmt]页面WebRoot\JSTLFmtDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <%@ page language= "java" import = "java.util.*" pageEncoding= "gbk" %> < html > < head > < title >JSTLFmtDemo格式标签库演示</ title > </ head > < body > <% --设定区域为中国内地-- %> < fmt:setLocale value = "zh_cn" /> <% -- 格式化为数字形式 -- %> 格式化为数字:< fmt:formatNumber value = "0.3" type = "number" />< br > <% -- 格式化为货币形式 -- %> 格式化为货币:< fmt:formatNumber value = "0.3" type = "currency" />< br > <% -- 格式化为百分比形式 -- %> 格式化为百分比:< fmt:formatNumber value = "0.3" type = "percent" />< br > <% --格式化日期,日期为当前日期-- %> 中国内地时间格式:< fmt:formatDate value=" <%= new Date() %> "/>< br > <% --设定区域为中国台湾-- %> < fmt:setLocale value = "zh_tw" /> <% --格式化日期,日期为当前日期-- %> <%! Date d = new Date(); %> 中国台湾时间格式:< fmt:formatDate value=" <%= d %> "/> </ body > </ html > |
(范例16) 创建[使用JSTLFn]页面WebRoot\JSTLFnDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title >JSTLFnDemo</ title > </ head > < body > < c:set var = "str" value = "Hello World!" /> <% --设置变量str -- %> 是否包含He子字符串:${fn:contains(str,"He")}< br > 是否包含he子字符串(忽略大小写):${fn:containsIgnoreCase(str,"He")}< br > 是否以llo字符串开头:${fn:startsWith(str,"llo")}< br > 是否以ld字符串结束:${fn:endsWith(str,"ld")} </ body > </ html > |
(1) 创建[登录]页面WebRoot\loginForm01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >登录页面</ title > </ head > < body > < form action = "loginConf.jsp" method = "post" > < table > < tr > < td colspan = "2" >< font color = "red" >${requestScope.error }</ font ></ td > </ tr > < tr > < td >用户名</ td > < td >< input type = "text" name = "username" /></ td > </ tr > < tr > < td >密码</ td > < td >< input type = "password" name = "upassword" /></ td > </ tr > < tr > < td >< input type = "submit" value = "登录" ></ td > < td >< input type = "reset" value = "重置" ></ td > </ tr > </ table > </ form > </ body > </ html > |
(2) 创建[登录判断]页面WebRoot\loginConf.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title > 登录判断页面 </ title > </ head > < body > < c:choose > <% --如果用户输入的用户名是root,则为合法用户名 -- %> < c:when test = "${param.username == 'root'}" > <% --判断用户密码是否合法,合法就直接跳转到登录成功页面-- %> < c:if test = "${param.upassword == 'admin'}" > < jsp:forward page = "LoginSuccess.jsp" ></ jsp:forward > </ c:if > < jsp:forward page = "LoginFailure.jsp" ></ jsp:forward > </ c:when > <% --如果用户输入的用户名不是root,则为非法用户名,直接调转到登录失败页面-- %> < c:otherwise > < jsp:forward page = "LoginFailure.jsp" ></ jsp:forward > </ c:otherwise > </ c:choose > </ body > </ html > |
(3) 创建[登录成功]页面WebRoot\LoginSuccess.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title >登录成功页面</ title > </ head > < body > < h1 >登录成功</ h1 > </ body > </ html > |
(4) 创建[登录失败]页面WebRoot\LoginFailure.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 | <%@ page language= "java" pageEncoding= "gbk" %> < html > < head > < title >登录失败页面</ title > </ head > < body > < h1 >登录失败</ h1 > </ body > </ html > |
创建[for循环输出表格]页面WebRoot\PracticeDemo01.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >循环生成10行10列的表格</ title > </ head > < body > < center > < h1 >循环生成10行10列的表格</ h1 > < table border = "1" > <% --外层循环控制行数,里层循环控制列数-- %> < c:forEach var = "hang" begin = "1" end = "10" > < tr > < c:forEach var = "lie" begin = "1" end = "10" > < td >< c:out value = "a" /></ td > </ c:forEach > </ tr > </ c:forEach > </ table > </ center > </ body > </ html > |
创建[forEcho输出九九乘法表]页面WebRoot\PracticeDemo02.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >生成九九乘法表</ title > </ head > < body > < center > < h1 >生成九九乘法表</ h1 > < table border = "1" > <% --外层循环控制行数,里层循环控制列数,列数总是等于行数-- %> < c:forEach var = "hang" begin = "1" end = "9" > < tr > < c:forEach var = "lie" begin = "1" end = "${hang}" > <% --使用out标签进行输出-- %> < td >< c:out value = "${lie}" />*< c:out value = "${hang}" />=< c:out value = "${hang * lie}" /></ td > </ c:forEach > </ tr > </ c:forEach > </ table > </ center > </ body > |
创建[forEcho输出班级列表中所有学生信息]页面WebRoot\PracticeDemo03.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <%@ page language= "java" import = "java.util.*" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >输出所有学生信息</ title > </ head > < body > <% List students = new ArrayList(); students.add( "李立明" ); students.add( "刘新" ); students.add( "顾小华" ); students.add( "张大伟" ); pageContext.setAttribute( "students" ,students); %> < center > < h1 >输出所有学生信息</ h1 > < table border = "1" > < c:forEach var = "student" varStatus = "stus" items = "${pageScope.students}" > < tr > < td >< c:out value = "${stus.index + 1}" ></ c:out ></ td > < td >< c:out value = "${student}" /></ td > </ tr > </ c:forEach > </ table > </ center > </ body > |
创建[计算1到100之间的偶数和]页面WebRoot\PracticeDemo04.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >输出1到100的偶数和</ title > </ head > < body > <% --设置变量sum,该变量用来保存相加的和-- %> < c:set var = "sum" scope = "page" value = "0" /> <% --设置变量item,该变量的初始值是 0 ,结束值是 100 ,步长为 2 ,然后循环相加,并把值设置到sum-- %> < c:forEach var = "item" begin = "0" end = "100" step = "2" > < c:set var = "sum" value = "${sum + item}" /> </ c:forEach > <% --输出sum-- %> 1到100的偶数和为:< c:out value = "${sum}" /> </ body > </ html > |
创建[页面自动刷新]页面WebRoot\PracticeDemo05.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >页面自动刷新</ title > </ head > < body > <% -- 使用response对象的setIntHeader实现页面自动刷新-- %> <% response.addIntHeader( "Refresh" , 10 ); %> < h4 >该页面10秒后自动刷新</ h4 > </ body > </ html > |
(1) 创建[简单计算器]页面WebRoot\PracticeDemo06.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >简单计算器</ title > < script type = "text/javascript" > function validate(form){ var errors = ""; var number1 = form.number1.value; var number2 = form.number2.value; if( number1== null || number1== "" || number2== null || number2== "" ) { errors += "请输入操作数"; }else if(!/^\d{1,9}$/.test(number1) || !/^\d{1,9}$/.test(number2)){ errors +="请输入正确的操作数(操作数不能大于9位)"; } if(errors == ""){ return true; }else{ alert(errors); return false; } } </ script > </ head > < body > < center > < h1 >简单计算器</ h1 > < hr > < form action = "PracticeDemo06Result.jsp" method = "post" name = "form" onsubmit = "return validate(this)" > < input type = "text" name = "number1" /> < select name = "ope" > < option value = "add" >+</ option > < option value = "minus" >-</ option > < option value = "multiply" >*</ option > < option value = "divide" >/</ option > </ select > < input type = "text" name = "number2" /> < input type = "submit" value = "计算" /> < input type = "reset" value = "重置" /> </ form > </ center > </ body > </ html > |
(2) 创建[简单计算器]页面WebRoot\PracticeDemo06Result.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >简单计算器</ title > </ head > < body > < center > < h1 >简单计算器</ h1 > < hr > < c:if test = "${param.ope == 'add'}" > ${param.number1 } + ${param.number2 } = ${param.number1 + param.number2 } </ c:if > < c:if test = "${param.ope == 'minus'}" > ${param.number1 } - ${param.number2 } = ${param.number1 - param.number2 } </ c:if > < c:if test = "${param.ope == 'multiply'}" > ${param.number1 } * ${param.number2 } = ${param.number1 * param.number2 } </ c:if > < c:if test = "${param.ope == 'divide'}" > < c:choose > < c:when test = "${param.number2 == 0}" > < font color = "red" >零不能做为除数</ font > </ c:when > < c:otherwise > ${param.number1 } / ${param.number2 } = ${param.number1 / param.number2 } </ c:otherwise > </ c:choose > </ c:if > </ center > </ body > </ html > |
(1) 创建[百度搜索]页面WebRoot\PracticeDemo07.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >百度搜索功能</ title > </ head > < body > < center > < form method = "post" action = "PracticeDemo07Result.jsp" > < table > < tr > < td colspan = "2" >使用百度搜索</ td > </ tr > < tr > < td >关键字</ td > < td >< input type = "text" name = "keyword" ></ td > </ tr > < tr > < td ></ td > < td >< input type = "submit" value = "搜索" ></ td > < tr > </ table > </ form > </ center > </ body > </ html > |
(2) 创建[使用redirect跳转,并传递参数]页面WebRoot\PracticeDemo07Result.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >使用redirect跳转,并传递参数</ title > </ head > < body > <% --乱码处理-- %> <% request.setCharacterEncoding( "gbk" ); %> <% --传递参数 参数值为用户提交的参数-- %> < c:param name = "wd" value = "${param.keyword}" /> </ c:redirect > </ body > </ html > |
(1) 创建[多国语言页面]页面WebRoot\PracticeDemo08.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <%@ page language= "java" pageEncoding= "utf-8" %> <% --判断接收到的下拉列表的值,页面在默认没有选择的情况下设置区域值为zh_CN-- %> < c:choose > < c:when test = "${empty param.languageSelect}" > < fmt:setLocale value = "zh_CN" /> </ c:when > < c:when test = '${param.languageSelect == "en_US"}' > < fmt:setLocale value = "en_US" /> </ c:when > < c:when test = '${param.languageSelect == "zh_CN"}' > < fmt:setLocale value = "zh_CN" /> </ c:when > < c:when test = '${param.languageSelect == "zh_TW"}' > < fmt:setLocale value = "zh_TW" /> </ c:when > </ c:choose > <% --设置数据来源-- %> < fmt:setBundle basename = "PracticeDemo08" scope = "session" /> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >< fmt:message key = "title" /></ title > < script language = "javascript" > function selectsubmit(){ document.form.submit(); } </ script > </ head > < body > < form action = "PracticeDemo08.jsp" method = "post" name = "form" > <% --设置下拉列表,当下拉列表的选择发生改变时,会调用javascript的selectsubmit函数-- %> < select name = "languageSelect" onchange = "selectsubmit();" > < option value = "choose" > <% --读取资源文件中的值-- %> < fmt:message key = "form.choose" /> </ option > < option value = "en_US" > <% --读取资源文件中的值-- %> < fmt:message key = "form.option1" /> </ option > < option value = "zh_CN" > <% --读取资源文件中的值-- %> < fmt:message key = "form.option2" /> </ option > < option value = "zh_TW" > <% --读取资源文件中的值-- %> < fmt:message key = "form.option3" /> </ option > </ select > </ form > <% --读取资源文件中的值-- %> < fmt:message key = "message" /> </ body > </ html > |
(2) 创建[英文]多国语言属性文件 src\PracticeDemo08_en_US.properties
1 2 3 4 5 6 7 | form.choose = Please choose your language form.option1 = English form.option2 = Simplified_Chinese form.option3 = Traditional_Chinese message = Hello World! title = English |
(3) 创建[简体中文]多国语言属性文件 src\PracticeDemo08_zh_CN.properties
1 2 3 4 5 6 7 | form.choose = \u8BF7\u9009\u62E9\u8BED\u8A00\u7684\u79CD\u7C7B form.option1 = \u82F1\u6587 form.option2 = \u7B80\u4F53\u4E2D\u6587 form.option3 = \u7E41\u4F53\u4E2D\u6587 message = \u4F60\u597D\u4E16\u754C title = \u4E2D\u6587\u9875\u9762 |
(4) 创建[繁体中文]多国语言属性文件 src\PracticeDemo08_zh_TW.properties
1 2 3 4 5 6 7 | form.choose = \u8ACB\u9078\u64C7\u8A9E\u8A00\u7684\u7A2E\u985E form.option1 = \u82F1\u6587 form.option2 = \u7C21\u9AD4\u4E2D\u6587 form.option3 = \u7E41\u9AD4\u4E2D\u6587 message = \u4F60\u597D\u4E16\u754C title = \u7E41\u9AD4\u4E2D\u6587 |
(1) 创建[输入时间显示不同时区的时间]页面WebRoot\PracticeDemo09.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >用户输入页</ title > </ head > < body > < form action = "PracticeDemo09Result.jsp" method = "post" > 输入时间:< br > < input type = "text" name = "userTime" >格式如(14:22:56)< br > < input type = "submit" value = "提交" > </ form > </ body > </ html > |
(2) 创建[显示页]页面WebRoot\PracticeDemo09Result.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >显示页</ title > </ head > < body > <% --将接受到的参数值保存在变量userTime变量中-- %> < c:set var = "userTime" value = "${param.userTime}" /> <% --将变量值按照格式转换从时间类型-- %> < fmt:parseDate value = "${userTime}" type = "time" pattern = "HH:mm:ss" var = "ctime" /> <% --设置语言区域,并将时间按不同的语言区域显示-- %> < fmt:setLocale value = "zh_CN" /> 中国内地:< fmt:formatDate value = "${ctime}" type = "time" />< br > < fmt:setLocale value = "zh_TW" /> 中国台湾:< fmt:formatDate value = "${ctime}" type = "time" />< br > < fmt:setLocale value = "en_US" /> 美国:< fmt:formatDate value = "${ctime}" type = "time" />< br > </ body > </ html > |
(1) 创建[新闻列表]页面WebRoot\PracticeDemo10.jsp, gb2312 -- gbk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ page language= "java" pageEncoding= "gbk" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > < title >显示新闻</ title > </ head > < body > < h3 >今日新闻热点</ h3 > </ body > </ html > |
(2) 在src创建test包,创建[NLFunction.java]
1 2 3 4 5 6 7 8 9 10 11 12 13 | package test; public class NLFunction { public static String newsList(String text,String link){ StringBuilder sb = new StringBuilder(); sb.append( "<a href='" ); sb.append(link); sb.append( "'>" ) ; sb.append(text); sb.append( "</a>" ); return sb.toString(); } } |
(3) 修改WebRoot\WEB-INF\web.xml如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? xml version = "1.0" encoding = "UTF-8" ?> < web-app version = "2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee < welcome-file-list > < welcome-file >index.jsp</ welcome-file > </ welcome-file-list > < jsp-config > < taglib > < taglib-location >/WEB-INF/myself-taglib.tld</ taglib-location > </ taglib > </ jsp-config > </ web-app > |
(4) 在WebRoot\WEB-INF\创建[myself-taglib.tld]如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version = "2.0" > < description >myFunction</ description > < tlib-version >1.0</ tlib-version > < short-name >my</ short-name > < function > < name >newsList</ name > < function-class >test.NLFunction</ function-class > < function-signature > java.lang.String newsList( java.lang.String,java.lang.String ) </ function-signature > </ function > </ taglib > |