頁(yè)面中導(dǎo)入的包太多,而實(shí)際上頁(yè)面里面唯一允許導(dǎo)入的只" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > 2018-5-25 JSP_Web_MVC開發(fā)(18)-Servlet簡(jiǎn)介及例子

2018-5-25 JSP_Web_MVC開發(fā)(18)-Servlet簡(jiǎn)介及例子

時(shí)間:2023-05-30 23:45:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-30 23:45:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)

2018-5-25 JSP_Web_MVC開發(fā)(18)-Servlet簡(jiǎn)介及例子:JSP+DAO的設(shè)計(jì)模式開發(fā)之中,使用最多的概念:request、session(屬性、注銷)、application。此類開發(fā)存在以下問(wèn)題:

【Servlet簡(jiǎn)介】

Servlet意思是服務(wù)器端小程序,它是Java實(shí)現(xiàn)的CGI程序。與傳統(tǒng)的CGI程序不同的是,Servlet采用的是多線程的方式進(jìn)行處理,所以性能更加優(yōu)秀。

Servlet是一個(gè)純粹運(yùn)行在服務(wù)器端的Java程序。開發(fā)歷史上先有了Servlet,然后由Servlet產(chǎn)生了JSP,主要是因?yàn)镾ervlet的頁(yè)面輸出非常不方便,受到微軟ASP技術(shù)的啟發(fā)后誕生了ASP。

但是并不是說(shuō)Servlet沒有任何用處了。相反,Servlet在架構(gòu)設(shè)計(jì)上的重要概念就體現(xiàn)出來(lái)了。




【第一個(gè)Servlet程序】

任何一個(gè)Servlet程序都是一個(gè)Java程序,如果使用Eclipse開發(fā),在src目錄下保存程序。

src目錄下所建立的所有*.java程序最終都會(huì)保存在WEB-INF/classes目錄中。

建立一個(gè)新的Dynamic Web Project--ServletProject,為了方便代碼編寫,讓其生成web.xml文件。

所有的Servlet程序都一定要繼承javax.servlet.http.HttpServlet類,此類定義如下:

public abstract class HttpServlet extends GenericServlet implements java.io.SerializableHttpServlet是一個(gè)抽象類,抽象類的使用原則就是必須有子類,而且子類要覆寫方法。此時(shí)選擇要覆寫的方法為doGet():

protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException例 定義HelloServlet類

在項(xiàng)目的src目錄下新建一個(gè)類HelloServlet,選擇繼承自HttpServlet類

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@SuppressWarnings("serial")public class HelloServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out=resp.getWriter();//取得客戶端輸出 out.println("<html>"); out.println("<head><title>第一個(gè)Servlet</title></head>"); out.println("<body>"); out.println("<h1><font color=/"red/">Hello World!</font></h1>"); out.println("</body>"); out.println("</html>"); out.close(); }}Servlet程序并不是依靠主方法運(yùn)行的,它需要Web容器執(zhí)行,而Web容器要想識(shí)別此程序,則需要修改web.xml文件,增加Servlet的配置。

<!--此處表示定義一個(gè)Servlet的配置--> <servlet> <!--配置的Servlet名稱,與servlet-mapping對(duì)應(yīng)--> <servlet-name>helloServlet</servlet-name> <!--配置此Servlet所在路徑,一定要保存在Web-INF/classes下--> <servlet-class>cn.mytest.servlet.HelloServlet</servlet-class> </servlet> <!--Servlet訪問(wèn)的映射路徑--> <servlet-mapping> <!--與處理的Servlet對(duì)應(yīng)--> <servlet-name>helloServlet</servlet-name> <!--訪問(wèn)路徑,一定要有“/”--> <url-pattern>/hello.do</url-pattern> </servlet-mapping>如果要進(jìn)行亂碼處理,處理的是服務(wù)器端回應(yīng)的亂碼程序,此時(shí)可以加入如下代碼:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("UTF-8"); resp.setContentType("text/html"); PrintWriter out=resp.getWriter();//取得客戶端輸出 out.println("<html>"); out.println("<head><title>第一個(gè)Servlet</title></head>"); out.println("<body>"); out.println("<h1><font color=/"black/">這是Hello World!</font></h1>"); out.println("</body>"); out.println("</html>"); out.close();}今后通過(guò)Servlet輸出數(shù)據(jù),一定要控制編碼問(wèn)題。而且代碼必須在resp.getWriter()之前!

通過(guò)第一個(gè)程序可以清楚的發(fā)現(xiàn),Servlet最麻煩的不在于程序的編寫,也不在于配置,而是在內(nèi)容的輸出上(html代碼嵌入)。

在Eclipse之中,除了手工配置之外(建議用手工),還可以利用工具自動(dòng)完成配置。




自動(dòng)生成的HelloServlet.java代碼如下:

package cn.mytest.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class HelloServlet */@WebServlet( urlPatterns = { "/hello.do" }, initParams = { @WebInitParam(name = "helloServlet", value = "cn.mytest.servlet.HelloServlet") })public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); }}注意:web.xml沒有任何改動(dòng)。

運(yùn)行結(jié)果

總結(jié)

今后開發(fā)建議不要用自動(dòng)創(chuàng)建,還是手工創(chuàng)建比較好。

關(guān)鍵詞:例子

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉