Java Servlet 基础编程 HelloWorld & HelloForm
前言
在工作的时候, 经常听别人说. Servlet
是接触Web编程的第一步, 而不是SSH
的框架编程. 由于, 在学校的网络编程的知识快忘了个干净. 本章 将两个基础的部分记录于此. 本章主要介绍HttpServlet
的Quick 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教程