Servlet學習基礎

**servlet:在服務端運行的程序區別於applet(在客戶端運行)**

1.servlet的調用比較jsp

jsp:把編譯好的jsp頁面發佈到服務器,服務器編譯成java文件,而後將java文件發送到頁面上,頁面上而後在對java代碼中的網頁文件進行提取。(咱們能夠查看tomcat中的緩存文件,看到咱們的jsp頁面轉換成了一個.class,一個.java)。html

servlet:客戶端請求服務器,服務器找到相應的(經過web.xml)servlet,servlet跟數據庫進行溝通,servlet 將編譯好的文件傳給客戶端瀏覽器,而後瀏覽器進行提取網頁文件(如html等)。java

2.servlet的建立步驟

  1. 建立一個普通JAVA類,並繼承HttpServlet
public class HelloServlet extends HttpServlet
  1. 重寫doGet/doPost/service方法中的其中一個
@Override
        //用於處理get請求
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			doPost(req,resp);
	}

	@Override
        //用於處理post請求
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			System.out.println("處理數據。。。。。");
			System.out.println("執行完畢。。。。。");
	}

        /**
	 * 用於處理get以及post
	 */
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("請求servlet,service方法被執行");
	}
  1. 在web.xml中配置(註冊servlet)
<!-- 配置servlet -->
  <servlet>
  		<servlet-name>hello</servlet-name>
  		<servlet-class>com.softeem.sevlet.HelloServlet</servlet-class>
  </servlet>
  <!-- 映射 -->
  <servlet-mapping>
  		<!-- 名字需和上面同樣 -->
  		<servlet-name>hello</servlet-name>
  		<url-pattern>/hello</url-pattern>
  </servlet-mapping>

3.servlet的執行流程

服務器啓動,tomcat對全部xml文件進行初始化檢查,若是出現錯誤,則直接將錯誤信息提示到控制檯,當客戶端發起請求,容器(服務器)會檢查請求的資源路徑,經過資源去匹配url-pattern,經過對應的servlet-name找到指定的servlet-class進行執行,執行時,首先對servlet進行初始化(只初始化一次),而後根據客戶端請求方式,尋找到對應的doGet/doPost進行執行;當服務器中止服務,容器會對全部的servlet進行銷燬,並執行servlet中的destory()。web

#4. servlet的生命週期 init --> doGet/doPost -->destory數據庫

  1. 當客戶端請求第一次到達,容器會對指定的servlet進行初始化並調用init方法完成初始化
  2. 根據客戶端請求方式(get,post)尋找servlet中的doGet/doPost執行,後續的屢次重複訪問再也不執行init()
  3. 當服務器中止,則servlet會執行destory(),完成銷燬

5.servlet的初始化參數

  1. 參數以下
<!-- 初始化參數 -->
    <init-param>
    	<param-name>encoding</param-name>
    	<param-value>UTF-8</param-value>
    </init-param>
     <init-param>
    	<param-name>contentType</param-name>
    	<param-value>text/html</param-value>
    </init-param>

    /**例如,咱們能夠把服務端響應的編碼方式,以及響應的類型設置初始化參數,而後咱們只須要在使用的
        時候獲取這個初始化參數便可
    */

6.servlet簡單作一個登陸

  1. 在login.jsp中有一個簡單的登陸框(這裏的action對應web.xml中配置的urlpattern)
<form action="LoginServlet">   
   	USERNAME:<input type="text" name="username">
   	PASSWORD:<input type="password" name="password"/>
   	<input type="submit" value="登陸">
</form>
  1. 咱們在java中建一個LoginServlet類(myeclipse中能夠直接建一個servlet),遵循咱們以前介紹的步驟
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			doPost(request,response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			
			String uname = request.getParameter("username");
			String upass = request.getParameter("password");
			String encode = this.getInitParameter("encoding");
			String contentType = this.getInitParameter("contentType");
			//設置response編碼
			response.setCharacterEncoding(encode);
			//設置響應的類型
			response.setContentType(contentType+";charset="+encode);
			
			PrintWriter pw = response.getWriter();
			if("admin".equals(uname.trim())){
				if("123456".equals(upass.trim())){
					pw.println("<script>alert('登陸成功');window.location.href='main.jsp'</script>");
				}else{
					pw.println("<script>alert('密碼錯誤');window.location.href='login.jsp'</script>");
				}
			}else{
				pw.println("<script>alert('帳號錯誤或不存在');window.location.href='login.jsp'</script>");
			}
			pw.flush();
			pw.close();
	}
  1. web.xml中進行配置(這裏要注意的是,咱們啓用服務器的時候必定要注意有沒有報錯,有的話就要去檢查web.xml),若是咱們是直接創建一個servlet的話,myeclipse會跟咱們自動配置web.xml。
相關文章
相關標籤/搜索