Java Servlet 基礎編程 HelloWorld & HelloForm

前言

在工作的時候, 經常聽別人說. Servlet是接觸Web編程的第一步, 而不是SSH的框架編程. 由於, 在學校的網絡編程的知識快忘了個乾淨. 本章 將兩個基礎的部分記錄於此. 本章主要介紹HttpServletQuick Start Demo. 後一章主要介紹表單提交的Demo.

本章涉及的例子都可以在
https://github.com/SeanYanxml/arsenal/tree/master/arsenal-java/arsenal-servlet
下找到.

如果你覺得我的項目不錯, 不妨給我一個Star. 你的支持就是我的動力.


準備工作

  • Java
  • Eclipse IDE
  • Maven
  • Tomcat Server配置
    在這裏插入圖片描述
  • Maven依賴配置
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.yanxml</groupId>
    <artifactId>arsenal-java-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  
  <groupId>com.yanxml</groupId>
  <artifactId>arsenal-servlet</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>arsenal-servlet</name>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
	<dependency>
    	<groupId>javax.servlet</groupId>
    	<artifactId>javax.servlet-api</artifactId>
    	<version>4.0.0</version>
    	<scope>provided</scope>
	</dependency>
  </dependencies>
</project>

注: Servlet 2.5+在開發時, 經常使用web.xml進行相關的配置. 在Servlet 3.0+之後並不再使用其配置. 本章爲還原經典配置, 仍然使用web.xml文件進行路由的配置.


基本操作

Case 1 HelloWorld
  • HelloWorld HttpServlet類
package com.yanxml.arsenal.servlet.hello;

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;

public class HelloWorldServlet extends HttpServlet{
	
	private String message;
	
	public void init() throws ServletException{
		// 執行初始化操作
		message = "Hello World.";
	} 
	
	// Get 方法請求
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
		// 設置響應內容詳情
		response.setContentType("text/html");
		
		// 處理邏輯
		PrintWriter writer = response.getWriter();
		writer.print("<h1>"+message+"</h1>");
	}
	
	public void destroy(){
		// do nothing
	}
}
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns="http://java.sun.com/xml/ns/javaee"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
    id="WebApp_ID" version="3.0">  
    <display-name>ServletLearning</display-name>  

    <servlet>  
        <servlet-name>HelloWorld</servlet-name>  
        <servlet-class>com.yanxml.arsenal.servlet.hello.HelloWorldServlet</servlet-class>  
    </servlet>  

	<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>  
          <!--對應上方的servlet配置-->
        <servlet-name>HelloWorld</servlet-name>  
        <url-pattern>/helloworld</url-pattern>  
    </servlet-mapping>  
    
    
    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

訪問地址: http://localhost:8080/arsenal-servlet/helloworld
在這裏插入圖片描述

Case 2 HelloForm
  • HelloFormServlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HelloForm")
public class HelloFormServlet extends HttpServlet{
	
	public HelloFormServlet(){
		super();
	}
	
	protected void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
		response.setContentType("text/html;charset=UTF-8");
		
		PrintWriter writer = response.getWriter();
		String title = "使用 GET 方法讀取表單數據";
        // 處理中文
        String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
        String docType = "<!DOCTYPE html> \n";
        writer.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor=\"#f0f0f0\">\n" +
            "<h1 align=\"center\">" + title + "</h1>\n" +
            "<ul>\n" +
            "  <li><b>站點名</b>:"
            + name + "\n" +
            "  <li><b>網址</b>:"
            + request.getParameter("url") + "\n" +
            "</ul>\n" +
            "</body></html>");
	}
	
	public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
		doGet(request, response);
	}

}

在類中使用WebServlet的方式進行配置, 避免了繁瑣的web.xml配置.

  • hello.html 表單頁面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Servlet教程</title>
</head>
<body>
<form action="HelloForm" method="GET">
網址名:<input type="text" name="name">
<br />
網址:<input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

值得注意的是 此處的<form action="HelloForm" method="GET">指定了此處需要提交鏈接的地址.

訪問地址: http://localhost:8080/arsenal-servlet/Hello.html
在這裏插入圖片描述
在這裏插入圖片描述


Reference

[1]. [Runoob]Servlet教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章