Java之JavaServlet案例

题目:给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服务器的版本、仓库位置、配置文件位置

Maven 仓库位置

 

 

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.实现效果

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页