您的位置:首页 > 娱乐 > 明星 > Tomcat配置及Servlet相关知识

Tomcat配置及Servlet相关知识

2024/12/23 11:53:44 来源:https://blog.csdn.net/L14173233/article/details/142064003  浏览:    关键词:Tomcat配置及Servlet相关知识

这里以Eclipse为例,IDEA配置参考:IDEA 配置 Tomcat

一、Eclipse配置Tomcat

1.配置服务器运行环境

在窗口-首选项找到服务器-运行时环境,点击添加

在Apache中找到安装的Tomcat版本,下一步

选择安装目录以及所需的jdk版本,添加完成后应用并关闭

2.新建服务器

窗口-显示视图,找到服务器,打开

点击服务器视图中的连接

新建服务器,选择Tomcat的对应版本

3.新建动态Web项目

右键左侧空白处新建动态Web项目

输入项目名,下一步

勾选生成web.xml部署描述符,完成

4.创建类继承HttpServlet

创建一个类用于演示,项目结构如下

编写代码:

@WebServlet(urlPatterns = "/easy")
public class EasyServlet extends HttpServlet{//Servlet java服务端应用程序//EasyServlet extends HttpServlet//EasyServlet也是一个java服务端应用程序//就可以接收浏览器发送过来的请求//浏览器发送请求一般有两种形式 get/post//HttpServlet中定义了doGet和doPost两个方法//分别来处理get请求和post请求@Overridepublic void doGet(HttpServletRequest request,HttpServletResponse response) throwsIOException {System.out.println("----接收到请求");//接收参数String params_name= request.getParameter("name");response.getWriter().write("params---"+params_name);}@Overridepublic void doPost(HttpServletRequest request,HttpServletResponse response) {}}

5.启动服务器

右键服务器-添加和移除

点击添加

再次右键服务器,启动

控制台会打印日志

6.测试访问

浏览器中可以访问到

二、请求转发与重定向

        请求转发是指服务器接收到客户端的请求之后,将该请求转发给另一个资源进行处理,并将处理结果返回给客户端。客户端并不知道服务器进行了请求转发,它只知道最终返回的结果。这种方式下,客户端只发送了一次请求,服务器进行了多次处理。

        重定向是指服务器接收到客户端的请求之后,返回一个特殊的响应码,告诉客户端需要重新发送请求到另一个URL。客户端会根据这个响应码进行解析,并重新发送请求到指定的URL。这种方式下,客户端发送了两次请求,第一次请求到达服务器后,服务器会返回特殊的响应码,然后客户端再根据这个响应码发送第二次请求。

1、请求转发

        只能在项目中转发

编写一个类测试请求转发

@WebServlet("/hello")
public class HelloServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws 
ServletException, IOException {System.out.println("HelloServlet接收到请求");resp.getWriter().write("HelloServlet   response");}
}

修改EasyServlet中的方法

	@Overridepublic void doGet(HttpServletRequest request,HttpServletResponse response) throws
IOException, ServletException {System.out.println("----接收到请求");//接收参数String params_name= request.getParameter("name");//转发if(params_name!=null) {//回应response.getWriter().write("params---"+params_name);return;}else {//转发request.getRequestDispatcher("/hello").forward(request,response);return;}}

测试请求转发

2、重定向
        //重定向if("re".equals(params_name)) {response.sendRedirect("https://www.baidu.com");return;}

三、Servlet的作用域

Servlet的作用域是指Servlet对象在内存中存在的范围或时间段。Servlet共有4个作用域:请求(Request)、会话(Session)、上下文(Context)和页面(Page)。

  1. 请求作用域(Request): 请求作用域表示Servlet对象在一次HTTP请求的处理过程中存在,并且仅对当前请求有效。在同一次请求中,不同的Servlet对象之间无法共享数据。可以使用request对象的setAttribute()和getAttribute()方法来实现在不同的Servlet之间传递数据。

  2. 会话作用域(Session): 会话作用域表示Servlet对象在整个用户会话过程中存在,即从用户发送第一个请求到用户关闭浏览器。会话作用域中的Servlet对象可以跨多个请求共享数据。可以使用session对象的setAttribute()和getAttribute()方法来实现在不同的请求之间传递数据。

  3. 上下文作用域(Context): 上下文作用域表示Servlet对象在整个Web应用程序的生命周期中存在。在同一个Web应用程序中的不同Servlet对象可以共享数据。可以使用servletContext对象的setAttribute()和getAttribute()方法来实现在不同的Servlet之间传递数据。

  4. 页面作用域(Page): 页面作用域表示Servlet对象在页面级别上存在,即一个页面对应一个Servlet实例。在同一个页面中的不同Servlet对象可以共享数据。可以使用pageContext对象的setAttribute()和getAttribute()方法来实现在不同的Servlet之间传递数据。

作用域对象 request,session,ServletContext

转发前设置一个键值对

            //作用域对象 request  session  ServletContextrequest.setAttribute("白龙马","小白龙");//转发request.getRequestDispatcher("/hello").forward(request,response);return;

接收请求

@WebServlet("/hello")
public class HelloServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {System.out.println("HelloServlet接收到请求");Object obj = req.getAttribute("白龙马");resp.setHeader("Content-Type", "text/html;charset=utf-8");resp.getWriter().write("HelloServlet   response:"+obj);}
}

四、.jsp静态文件 

在webapps文件夹新建一个jsp文件

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>easypage页面<br/>${loginuser}
</body>
</html>

 创建类

@WebServlet("/page")
public class PageServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {//处理业务获取数据...req.setAttribute("loginuser", "张三");req.getRequestDispatcher("/easypage.jsp").forward(req, resp);return;}
}

测试访问

五、 Servlet生命周期

        Servlet的生命周期指的是Servlet在服务器中从被创建到被销毁的整个过程。Servlet生命周期可以分为三个阶段:初始化、服务和销毁

        Servlet在第一次访问时实例化对象,实例化之后理解执行了初始化方法,是单例的,线程不安全。

//Servlet生命周期
//loadOnStartup默认-1,设置为正数则在启动时直接实例化对象,数值越小越优先
@WebServlet(urlPatterns = "/page",loadOnStartup = 1)
public class PageServlet extends HttpServlet{public PageServlet() {System.out.println("PageServlet------实例化对象");}@Overridepublic void init() throws ServletException {System.out.println("PageServlet------初始化对象");}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws 
ServletException, IOException {//服务super.service(req, resp);//先执行service方法根据请求方式不同分别执行doGet或doPost方法}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {//处理业务获取数据...req.setAttribute("loginuser", "张三");req.getRequestDispatcher("/easypage.jsp").forward(req, resp);return;}@Overridepublic void destroy() {//要结束时执行销毁System.out.println("PageServlet------销毁对象");}}

第一次访问时

服务器停止时

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com