javascript
JSP页面最终是编译为Servlet执行的
JSP頁面最終是編譯為Servlet執(zhí)行的,你可以在Tomcat的%CATALINA_HOME%/work/Catalina/localhost中找到一個(gè)文件夾,該文件夾跟你的web-project的虛擬路徑一致!比如說,我在%CATALINA_HOME%/conf/server.xml中配置了我的web-project為如下
<Context path="/mldn" docBase="E:/web.workspace/mldndemo/WebContent" reloadable="true"/>那么在%CATALINA_HOME%/work/Catalina/localhost中就有一個(gè)文件夾名為“mldn”!
并且,你在\mldn\org\apache\jsp目錄下還會(huì)找到你所有jsp頁面對應(yīng)的.class文件,這就證明了JSP頁面最終是編譯為Servlet執(zhí)行的!
所以,本質(zhì)上一個(gè)JSP頁面對應(yīng)一個(gè)Servlet!
因此,看到web.xml如下的配置,不要奇怪!因?yàn)镴SP本質(zhì)上就是Servlet!你看看JSP頁面的代碼,我們完全可以將其寫為Servlet!
web.xml
<servlet><servlet-name>dbinit</servlet-name><jsp-file>/WEB-INF/init.jsp</jsp-file><init-param><param-name>driver</param-name><param-value>org.gjt.mm.mysql.Driver</param-value></init-param><init-param><param-name>url</param-name><param-value>jdbc:mysql://localhost:3306/mldn</param-value></init-param></servlet><servlet-mapping><servlet-name>dbinit</servlet-name><url-pattern>/config.mldn</url-pattern></servlet-mapping>init.jsp(輸入http://127.0.0.1:8080/mldn/config.mldn訪問)
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>MLDN</title> </head> <body> <%String dbDriver = config.getInitParameter("driver");String dbURL = config.getInitParameter("url"); %> <h3>驅(qū)動(dòng)程序:<%=dbDriver %></h3> <h3>鏈接地址:<%=dbURL %></h3> </body> </html>等價(jià)的Servlet:
package org.lxh.servletdemo;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class DBInitServlet extends HttpServlet {private String dbDriver = null, dbURL = null;@Overridepublic void init(ServletConfig config) throws ServletException {// Javadoc: When overriding this form of the method, call super.init(config). super.init(config);this.dbDriver = config.getInitParameter("driver");this.dbURL = config.getInitParameter("url");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.println("<h3>驅(qū)動(dòng)程序:" + dbDriver + "</h3>");writer.println("<h3>鏈接地址:" + dbURL + "</h3>");}protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {this.doGet(req, resp);} }?
該Servlet的配置
<!-- DBInitServlet --><servlet><servlet-name>dbInitServlet</servlet-name><servlet-class>org.lxh.servletdemo.DBInitServlet</servlet-class><init-param><param-name>driver</param-name><param-value>org.gjt.mm.mysql.Driver</param-value></init-param><init-param><param-name>url</param-name><param-value>jdbc:mysql://localhost:3306/mldn</param-value></init-param></servlet><servlet-mapping><servlet-name>dbInitServlet</servlet-name><url-pattern>/DBInitServlet</url-pattern></servlet-mapping>調(diào)用該Servlet的頁面:
dbinit_info.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <jsp:forward page="/DBInitServlet"/> </body> </html>這二者顯示的結(jié)果是一樣的!
轉(zhuǎn)載于:https://www.cnblogs.com/qrlozte/p/3179517.html
總結(jié)
以上是生活随笔為你收集整理的JSP页面最终是编译为Servlet执行的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PostgreSQL的 initdb 源
- 下一篇: centos中使用python遇到的几个