大家好,感谢邀请,今天来为大家分享一下jsp成品网站源码分享音乐的问题,以及和基于jsp的音乐网站的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
什么是JSP?
JSP(全称JavaServerPages)是由SunMicrosystems公司主导创建的一种==动态==网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
JSP主要作用
代替Servlet程序回传HTML页面的数据。
接下来我们去看看JSP是如何实现代替Servlet的。
JSP在本质上就是一个Servlet程序?
如果我们访问一个Servlet程序,让它返回给我们一个前端页面,那么就需要在JavaWEB项目下编写一个HelloServlet程序:
packagecom.example.demo;\n\nimportjava.io.*;\nimportjavax.servlet.http.*;\nimportjavax.servlet.annotation.*;\n\n@WebServlet(&34;)\npublicclassHelloServletextendsHttpServlet{\n\npublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{\nresponse.setContentType(&34;);\n//HelloWorld页面\nPrintWriterout=response.getWriter();\nout.println(&34;);\nout.println(&39;en&34;);\nout.println(&34;);\nout.println(&39;UTF-8&34;);\nout.println(&34;);\nout.println(&34;);\nout.println(&34;);\nout.println(&34;);\nout.println(&34;);\nout.println(&34;);\n}\n\n}\n\n
当我们启动程序,在浏览器访问http://localhost:8080/hello-servlet时,浏览器会回传显示一个简单的页面
按F12进入开发者模式,可以看到Servlet程序响应回传了我们在Servlet程序中拼接的html代码。
那么到这里还不能让我们明白JSP就是一个Servlet,再往下看。
我们创建一个JSP文件index.jsp,这样启动项目时,自动弹出的首页就是我们的index.jsp页面。
<%@pagecontentType=&34;pageEncoding=&34;%>\n<!DOCTYPEhtml>\n<html>\n<head>\n<title>JSP-HelloWorld</title>\n</head>\n<body>\n<h1><%=&34;%></h1>\n</body>\n</html>\n\n
我们启动项目
从控制台找到项目部署路径
C:\\Users\\Jie\\AppData\\Local\\JetBrains\\IntelliJIdea2021.1\\tomcat\\38d57dfc-4429-4e47-8912-74706f5fff5a\n\n
我们直接访问此路径,可以看到目录下存在的文件。
进入work\\Catalina\\localhost\\ROOT\\org\\apache\\jsp目录,可以看到存在的两个文件【index_jsp.java】和【index_jsp.class】
接着我们将这两个文件删除,同时在浏览器进行刷新页面,可以看到目录下新增了我们刚删除的两个文件【index_jsp.java】和【index_jsp.class】
接着,我们使用Notepad++打开【index_jsp.java】文件,查看编译之后的Java文件代码。
可以看到index.jsp中HTML部分的代码被嵌入在java代码中,这和我们一开始在HelloServlet中拼接的HTML代码一摸一样。
packageorg.apache.jsp;\n\nimportjavax.servlet.*;\nimportjavax.servlet.http.*;\nimportjavax.servlet.jsp.*;\n\npublicfinalclassindex_jspextendsorg.apache.jasper.runtime.HttpJspBase\nimplementsorg.apache.jasper.runtime.JspSourceDependent,\norg.apache.jasper.runtime.JspSourceImports{\n/*something*/\n}\n\n
查看源码我们可以看见index_jsp继承了org.apache.jasper.runtime.HttpJspBase类,
packageorg.apache.jasper.runtime;\n\nimportjava.io.IOException;\n\nimportjavax.servlet.ServletConfig;\nimportjavax.servlet.ServletException;\nimportjavax.servlet.http.HttpServlet;\nimportjavax.servlet.http.HttpServletRequest;\nimportjavax.servlet.http.HttpServletResponse;\nimportjavax.servlet.jsp.HttpJspPage;\n\nimportorg.apache.jasper.Constants;\nimportorg.apache.jasper.compiler.Localizer;\n\n/**\n*ThisisthesuperclassofallJSP-generatedservlets.\n*\n*@authorAnilK.Vijendran\n*/\npublicabstractclassHttpJspBaseextendsHttpServletimplementsHttpJspPage{\n/*something*/\n}\n\n
我们继续查看org.apache.jasper.runtime.HttpJspBase类的源码,可以发现,HttpJspBase类直接继承了HttpServlet类。也就是说,JSP翻译出来的index_jsp.java类,它间接了继承HttpServlet类,这和我们直接编写Servlet程序继承HttpServlet类是一样的。
因此JSP本质就是一个Servlet程序。它可以省掉不少我们在Servlet中拼接HTML代码的时间。不过随着前后端分离的出现,JSP也逐渐被淘汰。
JSP的执行过程
当我们第一次访问JSP页面的时候,Tomcat服务器主要会帮我们完成:
把JSP页面翻译成为一个.java源文件对.java源文件编译成为.class字节码文件执行.class字节码文件返回结果
当我们第二次访问JSP页面的时候,如果未做更改,则使用上次编译的.class文件;若修改过,则重新编译。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
