搭建Servlet的web环境
迪丽瓦拉
2025-06-01 20:46:12
0

构建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中设置工件,还需要在项目中,应用工件设置

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

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

在这里插入图片描述

  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 {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");PrintWriter out=resp.getWriter();out.write("Test");}@Overrideprotected 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

  servlet2com.example.controller.TestControllerservlet2/servlet2

注解配置servlet

@WebServlet("/servlet1")
public class LoginController extends HttpServlet{protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, IOException {// TODO Auto-generated method stubrequest.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 stubdoGet(request, response);}
}

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

servlet转发与重定向

转发

转发是返回html页面,如返回模板引擎,共用一次请求和请求参数

@WebServlet("/servlet3")
public class RedirectController extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("index.jsp").forward(req,resp);}@Overrideprotected 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 {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//req.getRequestDispatcher("index.jsp").forward(req,resp);resp.sendRedirect("/servlet2");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

特点:

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

总结

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

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...