题目:给HelloServlet增加一个URL参数,例如传入http://localhost:8080/?name=Bob
,能够输出Hello, Bob!
链接:https://www.liaoxuefeng.com/wiki/1252599548343744/1304265949708322
基本的流程为:1)编写一个类继承HttpServlet类,在其中对URL指令进行处理。
2)将编写完成的应用程序部署到Tomcat服务器上。
实现JavaServlet案例需要新建一个Maven WebApp项目,在该项目中设置参数进行发布。
一、Maven项目介绍
Maven 作为一种Java项目管理,基本的结构如下:
pom.xml是项目的配置描述文件;
src存放源文件代码,main / java存放java源码,main / resources存放资源文件。test / java存放测试源码,test / resources存放测试文件;
target 存放所有编译和打包后的文件。
二、完整的过程以及注意
1.创建一个Maven WebApp项目,注意选择正确Tomcat服务器的版本、仓库位置、配置文件位置
2.在main 目录下创建 /java 目录和 /resources目录
通过选择上侧的选项将 /java 目录 设置为Sources ,resources目录设置为 Resources
3.添加TomCat配置和Servlet.api
添加Servlet来源:https://blog.csdn.net/lihua5419/article/details/94741500
4.在Main/java/gu.servlet 内创建HelloServlet类,以继承HttpServlet类。
分析题目要求,在接收到信息以后需要对接收信息进行处理,同时将该信息进行传出。所以需要重载的是HttpServlet类中的doget函数
package gu.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//后台响应给浏览器的内容以text/html打开
resp.setContentType("text/html");
// 这里是指回复的内容,用resp去传输
PrintWriter printwriter = resp.getWriter();
// 获取name的参数,这里由于和传递来的url有关,所以对象是req(请求)
String name = req.getParameter("name");
System.out.println(name);
String back_words = "hello";
if(name!=null){
back_words = name;
}
printwriter.write("Hello "+back_words+" !");
printwriter.flush();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
5.去配置web.xml,对网络请求的内容进行引导修改
web.xml位置位于main/webapp/WEB-INF目录下
5.1 进行网络命名空间的修改
5.2 进行请求的映射 将项目域名"localhost:8080/"之后的所有/*内容映射到hello对象,hello对象又设置为HelloServlet类的别名,借此去进行HelloServlet类的执行。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
<display-name>Archetype Created Web Application</display-name>
<servlet>
<!-- 类名为 hello-->
<servlet-name>hello</servlet-name>
<servlet-class>gu.servlet.HelloServlet</servlet-class>
<!-- 类路径为gu.servlet.HelloServlet,hello是HelloServlet的别名,由此去执行类-->
</servlet>
<servlet-mapping>
<!-- 对应控制器?url-pattern的/*映射到servlet-name为hello的类-->
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
<!-- 相当于过滤器。url匹配/*请求,负责重定向-->
</servlet-mapping>
</web-app>
6.发布项目,选择服务器以及添加Deployment
根据要求将Application context内容设置为 ,不然设置为多少localhost:8080之后的域名便为多少
7.实现效果