小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

搭建Servlet的web环境

# Java Web,servlet,前端,tomcat 额外说明

收录于:17天前

构建servlet

Idea构建maven项目

IDEA实现Maven项目创建并连接Tomcat

在这里插入图片描述
配置tomcat后启动tomcat

在这里插入图片描述
跳转到浏览器:
在这里插入图片描述
配置好tomcat服务器后启动正常应该跳转到index.jsp页面,这里出现404说明,未配置成功。

配置工件

出现这种情况的原因是工件未配置。 idea配置神器的作用就是将web war包放在tomcat的webapps目录下,这样tomcat启动时就可以访问到。

配置工件的步骤如下:

  1. 在File中打开Project Structure…
    在这里插入图片描述

  2. 选择web application工件,exploed表示拟部署,并不把war包放在webapps目录下但仍然可以在启动tomcat是访问web项目,aechive是部署,将war包放在webapps目录下。这里选在From Module即可。
    在这里插入图片描述

  3. 以上步骤就是在idea中设置artifact。您还需要在项目中应用工件设置。

在这里插入图片描述
点击+按钮

在这里插入图片描述
出现下面的工件即可:

在这里插入图片描述

  1. 再次启动就会自动跳转到index.jsp页面

在这里插入图片描述

修改默认url地址

部署的工件会自动生成url的地址http://localhost:8080/spring_security_war_exploded/这样看起来不便,这也是可以更改的:

在这里插入图片描述

只需将图片中的横线部分改为你喜欢的uri即可。更改后启动tomcat会自动跳转到index.jsp。

在这里插入图片描述

生成servlet

servlet有多种,一般都使用HttpServlet,其他请移步Java开发网站核心servlet

创建一个class类继承HttpServlet ——> extends HttpServlet——> 重写doGet和doPost方法:

public class TestController extends HttpServlet {
    

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        req.setCharacterEncoding("utf-8");
        PrintWriter out=resp.getWriter();
        out.write("Test");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        this.doPost(req, resp);
    }
}

Servlet 输入流

servlet的输出流是HttpServletResponse对象的getWriter方法,用于将数据流写入到http响应体中。其返回值类型是PrintWriter类型:

在这里插入图片描述
PrintWriter继承自Writer输出流:
在这里插入图片描述
通过PrintWriter提供的方法可以将字符数据写入到响应体。

请求servlet

请求servlet有两种方式: 1.配置文件web.xml; 2.@WebServlet注解

web.xml 配置 servlet

  <servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>com.example.controller.TestController</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/servlet2</url-pattern>
  </servlet-mapping>

注释配置servlet

@WebServlet("/servlet1")
public class LoginController extends HttpServlet{
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, IOException {
    
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        PrintWriter out=response.getWriter();
        out.write("Hello World");

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}

在这里插入图片描述
在这里插入图片描述

servlet转发与重定向

向前

转发就是返回html页面,比如返回到模板引擎,共享一个请求以及请求参数。

@WebServlet("/servlet3")
public class RedirectController extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        req.getRequestDispatcher("index.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        super.doPost(req, resp);
    }
}

HttpServletRequestgetRequestDispatcher方法,如果字符串有后缀,就在webapp下寻找该文件并返回,如果没有后缀,就跳转到另一个servlet中。

特点:
服务器内部跳转的特点:
1.需要使用request对象来完成
2.服务器内部跳转期间,是把请求request和响应response转发到下一个资源中,所以在整个跳转期间所有涉及到的资源使用的都是同一个request和response。
3.服务器内部跳转,不会改变浏览器地址栏中的地址。

重定向

重定向是基于HttpServletResponsesendRedirect方法,用户返回页面和servlet。如果字符串有后缀,就在webapp下寻找该文件并返回,如果没有后缀,就跳转到另一个servlet中。

@WebServlet("/servlet3")
public class RedirectController extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        //req.getRequestDispatcher("index.jsp").forward(req,resp);
        resp.sendRedirect("/servlet2");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        super.doPost(req, resp);
    }
}

特征:

1.需要使用response对象来完成
2.每一个客户端重定向,浏览器都会发出新请求,也就意味着在服务器内部会产生新的request对象和response对象
3.客户端重定向,会改变浏览器地址栏中的地址。

总结

servlet既能返回数据由能返回页面,就可以用前后端分离或混合开发来开发web应用了,更多细节请移步Java开发网站核心servlet

. . .

相关推荐

额外说明

检查linux中的网卡和网络状态

1,使用nload命令查看 #yum -y install nload 2, 查看eth0网卡网络情况 #nload eth0 Incoming也就是进入网卡的流量,Outgoing,也就是从这块网卡出去的流量,每一部分都有下面几个。 – Curr:当前

额外说明

《PostgreSQL开发指南》第22章 DML语句

《PostgreSQL 开发指南》专栏目录 第 01 篇 课程介绍 第 02 篇 PostgreSQL 简介 第 03 篇 PostgreSQL 安装 第 04 篇 角色与用户 第 05 篇 数据库与模式 第 06 篇 管理数据表 第 07 篇 管理表空

额外说明

微信小程序基于Promise封装发起网络请求

1.创建一个request.js // 相当于域名 const baseURL = '***************'; // 暴露一个request函数 export function request(parms) { // 路径拼接 cons

额外说明

【100个 Unity实用技能】☀️ | Unity InputSystem中拿到触摸屏幕的坐标,鼠标的坐标等

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方

额外说明

AIGC系列文章目录 第一章 AIGC 与AI对话,如何写好prompt?

AIGC系列文章目录 第一章 AIGC 与AI对话,如何写好prompt? 文章目录 AIGC系列文章目录 第一章 AIGC 与AI对话,如何写好prompt? 一、AIGC是什么? 二、Prompt是什么? 三、Prompt基本原则 四、Prompt常

额外说明

java 日志技术汇总(log4j , Commons-logging,.....)

前言 在java 中实现记录日志的方式有很多种, 1. 最简单的方式,就是system.print.out ,err 这样直接在控制台打印消息了。 2. java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件

额外说明

《天天数学》连载22:一月二十二日

格言作者:刘易斯·卡罗尔(Lewis Carroll,1832-1898),原名查尔斯·路特维奇·道奇森(Charles Lutwidge Dodgson),英国数学家、逻辑学家、童话作家、牧师、摄影师。生性腼腆,患有严重的口吃,但兴趣广泛,对小说、诗歌

额外说明

使用idea删除git仓库的文件夹

以删除a文件夹为例 使用idea终端输入 删除a文件夹 git rm -r --cached a 提交到git git commit -m a 推送到GitHub git push

额外说明

前端面试的话术集锦第 3 篇:进阶篇上

这是记录前端面试的话术集锦第三篇博文——进阶篇上,我会不断更新前端面试话术的博文。❗❗❗ 1 谈谈变量提升 当执⾏JS代码时,会⽣成执⾏环境,只要代码不是写在函数中的,就是在全局执⾏环境中,函数中的代码会产⽣函数执⾏环境,只此两种执⾏环境。 b() //

额外说明

Linux【入门篇】—— 概述、虚拟机创建、环境配置、vmtools的安装使用、共享文件夹的使用

目录 一、Linux 概述 二、Linux 环境搭建 1. 软件下载(附下载地址) 2. 环境搭建 3. 补充:网络连接的三种模式 三、虚拟机相关操作 1. 虚拟机克隆 2. 虚拟机快照 3. 虚拟机迁移和删除 四、安装 vmware tools 五、共

ads via 小工具