Java Servlet 基础编程 HelloWorld & HelloForm

版权声明:欢迎转载,转载请说明出处. 大数据Github项目地址https://github.com/SeanYanxml/bigdata。 https://blog.csdn.net/u010416101/article/details/89713870

前言

在工作的时候, 经常听别人说. 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
在这里插入图片描述
在这里插入图片描述


  • 另: JSP与Servlet的区别.
一般使用JSP来实现页面. Servlet来实现业务逻辑.
https://www.ppkao.com/tiku/shiti/8213672.html

jsp与servlet的区别与联系


Reference

[1]. [Runoob]Servlet教程

展开阅读全文

没有更多推荐了,返回首页