jsp网站源码分享怎么用?jsp 公司网站 源码

大家好,今天小编来为大家解答以下的问题,关于jsp网站源码分享怎么用,jsp 公司网站 源码这个很多人还不知道,现在让我们一起来看看吧!

第一章JSP

1、概述

1.1JSP引入

在前面的登录案例中,登录失败后为了能够响应登录的错误信息。我特意创建了一个LoginErrorServlet用来动态地拼接错误信息。

【代码如下】

LoginErrorServlet:登录失败,手动拼接login.html页面,并将错误信息动态地添加进去。

arduino复制代码//3.给浏览器生成响应信息\nbooleanresult=service.login(username,password);\nStringmsg=result?&34;:&34;;\nrequest.setAttribute(&34;,msg);\nif(result){\n//登陆成功\nresponse.sendRedirect(&34;);\n}else{\n//登陆失败\n//转发到处理错误的servlet中\nrequest.getRequestDispatcher(&34;).forward(request,response);\n}\n

2.LoginErrorServlet:手动拼接html页面,动态展示登录错误信息。

scss复制代码@Override\nprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{\n//响应给用户\nresponse.setContentType(&34;);\n//接收错误的信息\nStringmsg=(String)request.getAttribute(&34;);\n//获取输出流\nPrintWriterwriter=response.getWriter();\n//拼接登录的html页面\nresponse.getWriter().print(&34;);\nresponse.getWriter().print(&34;);\nresponse.getWriter().print(&39;loginInterServlet&39;post&34;);\nresponse.getWriter().print(&39;color:red&34;+msg+&34;);\nresponse.getWriter().print(&39;text&39;username&34;);\nresponse.getWriter().print(&39;password&39;password&34;);\nresponse.getWriter().print(&39;submit&39;登录&34;);\nresponse.getWriter().print(&34;);\nresponse.getWriter().print(&34;);\nresponse.getWriter().print(&34;);\n}\n

说明:上述虽然能够达到我的需求。但是他有以下两个缺点:

拼接麻烦开发效率低;阅读性差,代码难以维护;

问题:思考既然以前在servlet有上述缺点,为什么还要使用拼接呢?

因为如果我们想在html页面显示错误的信息,我们只能采用这种方式,html页面不能够书写java代码。而我们既不采用上述拼接标签的方式,还想实现简单的效果。我们可以使用jsp技术,在jsp中可以书写java代码同时还可以书写html标签。这样就能够使用jsp技术在客户端和服务端直接进行数据交互了。

1.2JSP是什么

JSP全名为JavaServerPages,中文名叫java服务器页面,其本质是一个Servlet,它是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。其实就是一个既能书写Servlet代码又能书写HTML代码的文件。

1.3创建JSP文件

sql复制代码在web目录下,新建一个jsp文件,点击鼠标右键New—JSP—给这个文件取个名字。\n

【图1创建JSP】

文件内容如下:

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n\n</body>\n</html>\n

1.4在JSP中书写代码

jsp中既可以书写java代码,同时还可以书写html标签。我们完成练习如何在jsp页面中书写java代码。

【需求】

在jsp页面上获取当前日期,并将其格式化成字符串&34;;将这个字符串展示在浏览器上;

说明:

1)jsp中的注释:<%–注释内容–%>,添加注释的快捷键是:ctrl+/;

2)在jsp中书写代码有三种方式,我们这里先介绍一种,格式:

<%java代码%>

【参考代码】demo01.jsp

arduino复制代码<%@pageimport=&34;%>\n<%@pageimport=&34;%><%–\nCreatedbyIntelliJIDEA.\nDate:2018-01-09\nTime:19:15\nTochangethistemplateuseFile|Settings|FileTemplates.\n–%>\n<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%–\njsp中的注释\n【需求】\n1.在jsp页面上获取当前日期,并将其格式化成字符串&34;;\n2.将这个字符串展示在浏览器上;\n–%>\n<%\n//获取当前系统时间\nDated=newDate();\n//创建日期格式化解析器对象\nSimpleDateFormatsdf=newSimpleDateFormat(&34;);\n//使用日期格式化解析器对象调用方法格式化日期对象d\nStrings_date=sdf.format(d);\n//控制台输出\nSystem.out.println(&34;+s_date);\n//将这个字符串展示在浏览器上\nresponse.getWriter().print(s_date);\n%>\n</body>\n</html>\n

【运行结果】启动tomcat,并且访问这个jsp页面。

在浏览器看到format格式的日期:

【控制台输出】

ini复制代码s_date=2018-01-0919:28:22\n

2、JSP的运行原理

通过上面的jsp初体验,我们看到jsp中既可以编写java代码也可以直接编写html代码,相对servlet更加方便.并且我们通过浏览器访问到的jsp页面,最后在浏览器中看到了响应到浏览器中的结果。那么整个过程的执行流程是怎样的呢,我们可以参考如下图:

通过上面的执行流程,我们可以找到jsp生成的.java源文件,这样就可以知道jsp的真正原理,同时可以看下jsp为什么是servlet。

如何查看生成的.java源文件呢?

我们可以到tomcat中查看一下上面案例中的jsp页面是怎么样的一种存在。IDEA借助tomcat发布web项目的机制:动态发布(为每一个web项目创建一个单独的发布文件)。我们可以通过tomcat其中日志中的CATALINA_BASE路径找到我们当前这个JSP页面在tomcat中的位置:

【图1IDEA发布项目的路径】

找到这个目录后,会看到以下3个文件夹:

【图2文件目录】

我们打开C:\\Users\\admin.IntelliJIdea2017.3\\system\\tomcat\\Tomcat_8_5_311_day05目录发现有两个文件:

【图3JSP被翻译后的代码】

打开demo01_jsp.java文件后,代码如下所示:

我们可以看到当前的jsp文件被翻译成了一个类,这个类继承HttpJspBase类,那么这个HttpJspBase类又是什么?

注意:jsp的翻译由服务器完成,HttpJspBase类一定也是tomcat服务器的内容,所以我们需要找到org.apache.jasper.runtime.HttpJspBase这个类,这个类可以到tomcat的安装目录下的lib文件夹下找到jasper.jar,将其解压,找如下目录:org\\apache\\jasper\\runtime,找到HttpJspBase.class。

使用反编译工具打开,如下所示:

通过观察源码,根据我们所学习的继承关系,我们发现JSP其实底层就是一个servlet。通过观察源码,我们发现我们刚刚编写的所有代码都在该Servlet里面的service方法内部。

swift复制代码publicfinalclassdemo01_jspextendsorg.apache.jasper.runtime.HttpJspBase{\n\npublicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse)\nthrowsjava.io.IOException,javax.servlet.ServletException{\ntry{\nresponse.setContentType(&34;);\npageContext=_jspxFactory.getPageContext(this,request,response,\nnull,true,8192,true);\n_jspx_page_context=pageContext;\napplication=pageContext.getServletContext();\nconfig=pageContext.getServletConfig();\nsession=pageContext.getSession();\nout=pageContext.getOut();\n_jspx_out=out;\n\nout.write(&39;);\nout.write(&39;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\n\n//获取当前系统时间\nDated=newDate();\n//创建日期格式化解析器对象\nSimpleDateFormatsdf=newSimpleDateFormat(&34;);\n//使用日期格式化解析器对象调用方法格式化日期对象d\nStrings_date=sdf.format(d);\n//控制台输出\nSystem.out.println(&34;+s_date);\n//将这个字符串展示在浏览器上\nresponse.getWriter().print(s_date);\n\nout.write(&34;);\nout.write(&34;);\nout.write(&34;);\n}catch(java.lang.Throwablet){\n。。。。\n}\n}\n

总结:

1.<%%>中书写的代码被直接解析成java代码;

2.jsp之所以可以编写html代码,其实本质上也是类似我们使用Servlet直接输出的。也就是说底层还是像我们之前做法一样进行标签拼接。html部分都被out.write(&34;)方法以字符串的形式拼接,然后响应给浏览器;

3.在这个java文件中有个_jspService,这个方法有两个参数request,response;

4.由于我们自己编写的代码全部都落入到了service方法内部一开始就已经声明了request,response,session,application(ServletContext)等对象了,这些对象成为之jsp内置对象。

3、JSP中书写java代码的三种方式

在JSP页面的body标签中,可以直接书写html代码和JS代码。但是,如果在JSP页面中书写java代码。必须遵循固定的格式,才能够生效;JSP页面中书写java代码有三种方式:1.脚本片段;2.脚本声明;3.脚本表达式;

方式一:脚本片段

脚本片段指的是一段java代码。书写格式:<%java代码%>

【示例】demo02.jsp

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%\n//书写java代码,向浏览器输出数据\nresponse.getWriter().println(&34;);\n%>\n</body>\n</html>\n\n

【被翻译后的源码】

swift复制代码out.write(&34;);\nout.write(&34;);\nresponse.getWriter().println(&34;);\nout.write(&34;);\n

【页面结果】:

方式二:脚本声明

erlang复制代码脚本片段虽然可以嵌入java代码,但是如果,我们要给当前的jsp中定义一些成员方法或者成员变量,就需要一个新的技术——脚本声明.\n

说明:通过查看jsp的源代码我们发现,脚本片段的代码都会存在service方法中,而方法中是不可以定义一个方法的。

脚本声明的格式:<%!书写Java代码%>

【示例一】声明成员变量demo03.jsp

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%!\nintnum=10;\npublicvoidmethod(){}\n%>\n</body>\n</html>\n\n

【被翻译后的代码】成员变量

方式三:脚本表达式

虽然脚本声明和脚本片段已经可以书写Java代码了,但是如果我们要使用java代码向页面输出一些内容,还是需要使用原来的response对象,比较繁琐,因此,我们需要一个更加简便的方式,可以代替response向页面输出内容——这个就是脚本表达式。

脚本表达式的格式:<%=向浏览器输出的内容%>等价于:out.print(向浏览器输出的内容)

【示例】在页面输出信息

bash复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%=&34;%>\n<%=&34;%>\n<%\nresponse.getWriter().print(&34;);\n%>\n</body>\n</html>\n\n

注意:

上面代码中,我们书写代码的顺序是先:

arduino复制代码<%=&34;%>\n<%=&34;%>\n

再:

vbscript复制代码response.getWriter().print(&34;);\n

可是浏览器查看数据的结果是

vbscript复制代码response我爱摸鱼上海程序员摸鱼\n

原因:response.getWriter()获取的输出流是:PrintWriter。而脚本表达式<%=%>等价于:out.print(向浏览器输出的内容).并且这种方式获取的输出流是:JspWriter。其实导致上述输出结果前后顺序就是PrintWriter和JspWriter。

JspWriter:将输出的内容先放到jsp内置的缓冲区中,然后再刷新输出。

PrintWriter:是不使用jsp内置的缓冲区,直接将内容写到网页中。

总结:

1.不要同时使用脚本表达式和response同时往页面输出信息,会出现顺序不一致。现象:response会出现在最前面。使用一种输出即可。

2.脚本表达式<%=str%>:在页面输出内容,在service方法中起作用;

3.脚本片段<%%>:在service方法中,原样输出的代码片段;属于局部为,放在_jspService方法中

4.脚本声明:<%!Stringstr=&34;%>:定义成员变量;

4、JSP的三大指令

4.1指令概述

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出效果,而只是告诉引擎如何处理JSP页面中的其余部分。

指令用来声明JSP页面的一些属性,比如编码方式,文档类型。我们在servlet中也会声明我们使用的编码方式和响应的文档类型的,而JSP就是用指令来声明的。

【1】JSP页面的3大指令

css复制代码a)page:页面\n<%@pagecontentType=&34;%>\n说明:声明jsp页面的编码方式\nb)taglib:引入标签库\nc)include:包含\n

【2】指令的格式

swift复制代码<%@指令名属性名=&34;%>\n

4.2taglib指令

【作用】

复制代码用于在JSP页面中导入JSTL标签库;\n

【格式】

ini复制代码<%@taglibprefix=&34;uri=&34;%>\n说明:表示引入外部的jstl标签库的。\nprefix=&34;表示前缀\nuri=&34;表示jstl标签库的地址\n

4.3include指令

【作用】

复制代码在一个JSP页面中静态包含另外一个JSP页面;\n

【格式】

ini复制代码<%@includefile=&34;%>指定要导入页面的地址\n

【使用示例】

需求:课后的原型中的页面放到web文件夹下面。然后打开主页index.jsp.在主页中引入header.jsp页面。

xml复制代码<!–引入头部–>\n<divid=&34;>\n<%@includefile=&34;%>\n</div>\n

【效果】

小结

三大指令是什么?分别的作用是?

page:设置网页上一些属性taglib:导入标签库include:包含另一个JSP页面

5、page指令

5.1、page指令概述

【1】page指令的作用

page是jsp中必须使用的一个指令,用于设置JSP上各种页面的属性,告诉tomcat如何将一个JSP翻译成Servlet

【2】语法格式

css复制代码<%@page属性名=&34;%>\n

可以放在JSP中任何位置,一般建议放在页面的最顶部

5.2、page指令的属性

【1】导包相关属性:

ini复制代码language=&34;当前页面使用的语言,不写默认是java\nimport=&34;导入java.util下所有类,导包\n

方式一:每个page指令导入一个类

less复制代码<%@pageimport=&34;%>\n<%@pageimport=&34;%>\n

方式二:一个page指令的import属性导入所有的包,包之间使用逗号分隔

ini复制代码<%@pageimport=&34;%>\n

作用:相当于导包

【代码演示】

ini复制代码<%–<%@pageimport=&34;%>\n<%@pageimport=&34;%>\n<%@pageimport=&34;%>–%>\n<%@pageimport=&34;%>\n\n<%–\nCreatedbyIntelliJIDEA.\nDate:2018-10-10\nTime:14:59\nTochangethistemplateuseFile|Settings|FileTemplates.\n–%>\n<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%\n//创建日期对象\nDatedate=newDate();\nSimpleDateFormatsimpleDateFormat=newSimpleDateFormat();\nArrayList<String>list=newArrayList<>();\n%>\n</body>\n</html>\n\n

【2】与编码相关属性:

ini复制代码<%@pagecontentType=&34;language=&34;%>\n

【作用】设置响应编码

vbscript复制代码response.setContentType(&34;);\n

【3】与错误相关

相关属性:

ini复制代码1、errorPage=&34;:\n用于指定如果当前页面出错,转发到哪个页面去:<%@pagelanguage=&34;errorPage=&34;%>\n\n2、isErrorPage=&34;:默认是false,指定true表示是错误页面\n当前这个页面是否是一个错误页面,错误页面可以多使用一个内置对象。exception:<%@pageisErrorPage=&34;%>\n

错误页面跳转的3种设置:

1、通过page指令的errorPage属性指定:如果页面出错,转发到error.jsp这个页面

ini复制代码<%@pageerrorPage=&34;%>\n

代码演示:

typescript复制代码<%–跳转到错误页面–%>\n<%@pageerrorPage=&34;%>\n\n<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%\ninti=1/0;\n%>\nhelloworld\n</body>\n</html>\n

typescript复制代码<%@pagecontentType=&34;language=&34;%>\n<%–声明是错误页面–%>\n<%@pageisErrorPage=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<h2>错误页面</h2>\n<%=exception.getMessage()%>\n</body>\n</html>\n

页面效果:

2、通过web.xml文件指定错误码:响应状态码为404则跳转到404.jsp页面

如果不指定,那么按照以前报错方式,会出现如下错误页面:

我们可以在web.xml进行配置跳转到更加好看一些的页面。

xml复制代码<!–指定错误页面–>\n<error-page>\n<!–指定错误码–>\n<error-code>404</error-code>\n<!–出错以后跳转到哪个页面–>\n<location>/404.jsp</location>\n</error-page>\n

404.jsp页面代码:

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<imgsrc=&34;/>\n</body>\n</html>\n

3、通过web.xml文件指定错误类型:发生空指针,则跳转到null.jsp页面

xml复制代码<!–指定错误的类型–>\n<error-page>\n<exception-type>java.lang.NullPointerException</exception-type>\n<location>/null.jsp</location>\n</error-page>\n\n

demo02.jsp

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<%\nStrings=null;\ns.length();\n%>\n</body>\n</html>\n

报空指针异常后的页面:null.jsp

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<h2>发生空指针异常了</h2>\n</body>\n</html>\n

浏览器效果:

page指令小结:

属性名

作用

language=&34;

指定JSP页面使用语言

**import=&34;**

导入包:1.每个import包入一个包2.一个import导入多个包,使用逗号分隔

errorPage=&34;

当前页面出错,转发到哪个错误页面

**isErrorPage=&34;**

当前是否是一个错误页面

contentType=&34;

指定页面类型和编码,不指定会有乱码

**isELIgnored=&34;**

是否忽略EL表达式,true表示EL不起作用

javascript复制代码<%@pagecontentType=&34;language=&34;isELIgnored=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n${3*5}\n</body>\n</html>\n

6、JSP常用动作标签

6.1、什么是动作标签

JSP动作标签利用XML语法格式的标记来控制Servlet引擎的行为。利用JSP动作标签可以动态包含其他jsp页面、把用户跳转到另外的页面、为Java插件生成HTML代码。

6.2、常用动作标签

JSP页面动作标签很多,常用的主要有以下3种:

makefile复制代码<jsp:include/>:动态包含\n<jsp:forward/>:跳转类似之前学习的转发技术\n<jsp:param/>:参数设置\n

6.3、常用标签使用

【1】<jsp:include>

【作用】

复制代码用于一个JSP页面动态包含另一个JSP页面\n

【语法】

ini复制代码<jsp:includepage=&34;/>URL是被包含的JSP页面\n

【使用示例】

a.jsp

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<h1>我是A页面</h1>\n<%intm1=10;%>\n\n<!–静态包含:–>\n<%@includefile=&34;%>\n\n<!–动态包含–>\n<%–<jsp:includepage=&34;/>–%>\n</body>\n</html>\n

b.jsp

javascript复制代码<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<h2>我是B页面</h2>\n<%intm=20;%>\n</body>\n</html>\n

【动态包含和静态包含】

静态包含include指令

动态包含include动作

语法格式

<%@includefile=&34;%>

<jsp:includepage=&34;/>

包含的方式

静态包含包含的是页面的内容。如果A包含B,则先将B的页面内容复制到A页面中,再运行A页面。B页面中不能出现与A页面同名的变量

动态包含包含的是页面的执行结果,如果A包含B,则先将B执行,再将B执行的结果包含到A页面中,执行A页面。B页面中可以出现与A页面中同名的变量

生成Servlet个数

只能生成了一个Servlet

生成了两个Servlet

说明:

如果只是引入jsp,不需要改变,那么使用静态引入。如果引入的jsp页面是变化的,那么使用动态引入。

【2】<jsp:forward>

用于页面的转发,与request.getRequestDispatcher(&34;).foward(request,response);功能一样的

ini复制代码<jsp:forwardpage=&34;/>转发\n

【3】<jsp:param>

用于给<jsp:forward>和<jsp:include>提供参数

ini复制代码<jsp:paramvalue=&34;name=&34;/>\n

forward和param动作

目标

forward作用param的功能

forward

功能:用于转发,相当于request.getRequestDispatcher(&34;).forward(request,response)语法

ini复制代码<jsp:forwardpage=&34;/>\n

param

功能:给forward和include提供参数名和值语法:做为子标签存在需求:在c.jsp页面中使用转发标签forward转发到d.jsp页面。c.jsp页面

javascript复制代码<%–\nCreatedbyIntelliJIDEA.\nDate:2018-10-10\nTime:16:41\nTochangethistemplateuseFile|Settings|FileTemplates.\n–%>\n<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<h2>c页面</h2>\n<%\n//解决中文乱码问题<jsp:paramname=&34;value=&34;/>是在d.jsp后面携带数据跳转到d.jsp页面的,通过浏览器的,需要先按照UTF-8编码之后在进行传递。然后在d.jsp页面使用request.getParameter(&34;)获取数据\nrequest.setCharacterEncoding(&34;);\n//向域对象request中存储数据\nrequest.setAttribute(&34;,19);\n%>\n<%–转发动作,携带的参数,可以在d.jsp上接收这参数,通过浏览器转发过去的,所以要想获取param携带的数据必须使用getParameter()方法获取数据–%>\n<jsp:forwardpage=&34;>\n<jsp:paramname=&34;value=&34;/>\n</jsp:forward>\n</body>\n</html>\n\n

d.jsp页面:

javascript复制代码<%–\nCreatedbyIntelliJIDEA.\nDate:2018-10-10\nTime:16:41\nTochangethistemplateuseFile|Settings|FileTemplates.\n–%>\n<%@pagecontentType=&34;language=&34;%>\n<html>\n<head>\n<title>Title</title>\n</head>\n<body>\n<h2>d页面</h2>\n<%–获取request域对象中的数据–%>\n<%=request.getAttribute(&34;)%>\n<%–获取转发param标签通过浏览器携带的数据–%>\n<%=request.getParameter(&34;)%>\n</body>\n</html>\n\n

案例演示

从c.jsp转发到d.jspc在请求域中添加键和值,d看能够得到值并且输出c转发的时候带参数,username和age,在d中获取并且输出汉字乱码问题的解决转发,url地址栏并没有发生改变

效果

小结

forward作用:在JSP页面上实现转发param的功能:在转发的时候提供其它的参数名和参数值

7、JSP页面常用对象

我们发现,我们在JSP页面中书写的代码最终都会翻译到_jspService()方法中,我们发现这个方法中有两个形参:HttpServletRequest对象HttpServletResponse对象。所以说,JSP的本质就是一个Servlet。我们可以直接在JSP页面上使用这两个对象。

【需求】登录页面改造

改造登录后的页面,用户登陆失败以后,跳转到login.jsp,在jsp页面中动态显示用户登陆错误中的信息。

【思路】

登录失败后直接转发到一个jsp页面;在jsp页面上使用request对象获取request中的值;

【LoginServlet代码】

说明:LoginServlet中,登录失败之后,直接转发到login.jsp页面。

ini复制代码protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{\n//解决中文乱码问题\nrequest.setCharacterEncoding(&34;);\n//获取用户名和密码\nStringusername=request.getParameter(&34;);\nStringpassword=request.getParameter(&34;);\nUserServiceInterservice=newUserServiceInterImpl();\nbooleanresult=service.login(username,password);\nStringmsg=result?&34;:&34;;\nrequest.setAttribute(&34;,msg);\nif(result){\nresponse.sendRedirect(&34;);\n}else{\n//转发到login.jsp页面\nrequest.getRequestDispatcher(&34;).forward(request,response);\n}\n}\n

【login.jsp页面】

xml复制代码<%@pagecontentType=&34;language=&34;%>\n<!DOCTYPEhtml>\n<htmllang=&34;>\n<head>\n<metacharset=&34;>\n<metahttp-equiv=&34;content=&34;>\n<metaname=&34;content=&34;>\n<title>登录页面</title>\n\n<linkhref=&34;rel=&34;>\n<linkhref=&34;rel=&34;>\n<scriptsrc=&34;></script>\n<scriptsrc=&34;></script>\n</head>\n<body>\n<%\nStringmsg=(String)request.getAttribute(&34;);\n%>\n<divclass=&34;>\n<formclass=&34;action=&34;method=&34;>\n<h2class=&34;>登录页面</h2>\n<fontcolor=&34;><%=msg%></font>\n<inputtype=&34;name=&34;class=&34;placeholder=&34;requiredautofocus>\n<inputtype=&34;name=&34;class=&34;placeholder=&34;required>\n<buttonclass=&34;type=&34;>登录</button>\n</form>\n</div>\n</body>\n</html>\n

说明:上述代码中:

css复制代码<fontcolor=&34;><%=msg%></font>\n

能够使用msg获取数据,因为编译之后存在于同一个类中,编译jsp如下所示:

效果图:浏览器访问login.html页面

登录密码输入错误:

小结:

JSP作用:给浏览器生成响应信息;JSP特点:动态网页,html+java,由服务器来运行的。本质上是一个Servlet;书写Java代码的三种方式:脚本片段:java代码片段,在service方法中起作用。格式:<%System.out.println(&34;)%>;脚本表达式:直接在页面输出内容,在service方法中起作用,等价于out.print(内容)。格式:<%=&34;%>脚本声明:定义成员变量,方法。在当前类中都起作用。<%!inta=10;%>JSP页面常用的对象:request,response;

关于jsp网站源码分享怎么用,jsp 公司网站 源码的介绍到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平