Tomcat配置及Servlet相关

目录

一、Tomcat配置

Eclipse配置Tomcat

1.配置服务器运行环境

2.新建服务器

3.新建动态Web项目

4.创建类继承HttpServlet

5.启动服务器

6.测试访问

二、关于Servlet

1.请求转发与重定向

请求转发

重定向

2.Servlet的作用域

3.Servlet生命周期

三、关于JSP

1.JSP的九个内置对象

2.JSP内嵌的三种Java脚本

(1)打印脚本

(2)运行脚本

(3)声明脚本


一、Tomcat配置

这里以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请求
	
	@Override
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException {
		System.out.println("----接收到请求");
		//接收参数
		String params_name= request.getParameter("name");
		
		response.getWriter().write("params---"+params_name);
	}
	
	@Override
	public void doPost(HttpServletRequest request,HttpServletResponse response) {
		
	}
	
}

5.启动服务器

右键服务器-添加和移除

点击添加

再次右键服务器,启动

控制台会打印日志

6.测试访问

浏览器中可以访问到


二、关于Servlet

Servlet是Java编写的服务器端程序,用于处理HTTP请求和响应。Servlet运行在Web服务器上,可以接收来自客户端的HTTP请求,并生成相应的HTTP响应。Servlet可以动态生成HTML页面、处理表单数据、访问数据库等。Servlet是JavaEE(Java Enterprise Edition)规范的一部分,它通过Java Servlet API提供了对服务器端开发的支持。

Tomcat定义一个Servlet通过继承HttpServlet,不同的服务器可能会有差异。

1.请求转发与重定向

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

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

请求转发

编写一个类测试请求转发

@WebServlet("/hello")
public class HelloServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet接收到请求");
		resp.getWriter().write("HelloServlet   response");
	}
}

修改EasyServlet中的方法

	@Override
	public 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;
		}
	}

测试请求转发

重定向

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

2.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  ServletContext
			request.setAttribute("白龙马","小白龙");
			//转发
			request.getRequestDispatcher("/hello").forward(request,response);
			return;

接收请求

@WebServlet("/hello")
public class HelloServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet接收到请求");
		Object obj = req.getAttribute("白龙马");
		resp.setHeader("Content-Type", "text/html;charset=utf-8");
		resp.getWriter().write("HelloServlet   response:"+obj);
	}
}

request.getParameter()方法

用于获取请求中的参数值,一般用于获取用户提交的表单数据或URL参数。

request.getAttribute()方法

用于获取请求中的属性值,一般用于在请求的不同部分之间共享数据。


在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{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//处理业务获取数据...
		req.setAttribute("loginuser", "张三");
		req.getRequestDispatcher("/easypage.jsp").forward(req, resp);
		return;
	}
}

测试访问


3.Servlet生命周期

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

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

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

}

第一次访问时

服务器停止时


三、关于JSP

JSP(Java Server Pages)是一种基于Java技术的服务器端技术,用于动态生成HTML页面。JSP允许在HTML页面中嵌入Java代码,通过标签和脚本语言来动态生成内容。与Servlet相比,JSP更加易于编写和维护,因为它可以直接在HTML页面中嵌入Java代码,而无需编写独立的Servlet类。当客户端请求一个JSP页面时,JSP引擎将会将其转换为一个Servlet类并编译执行。

<%@ page language="java" contentType="text/html; charset=utf-8" 
	pageEncoding="utf-8" isErrorPage="true" isELIgnored="true"%>
<!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/>
	<%-- 忽略EL表达式 --%>
	${loginuser}
	
	<!-- HTML注释 -->
	<%-- JSP注释 --%>
	
	<%-- JSP:java server page  tomcat在运行时会将.jsp文件解析成一个Servlet--%>
	<%-- JSP九大内置对象 --%>
	<%-- pageContext最小域对象、request、session、application四个域对象、 
	page当前对象、response、out、config、exception--%>
	
	<%-- 打印脚本 out.print() --%>
	<%=new String("<h1>你好</h1>") %>
	
	<%-- 运行脚本 运行java程序 --%>
	
	<table>
	<tr><td>ID</td><td>编号</td><td>姓名</td></tr>
	<% for(int i=0;i<num;i++){%>
		<tr><td><%= i+1 %></td><td><%= i+1001 %></td><td><%="张三" %></td></tr>
	<% } %>
	
	<%-- 声明脚本 声明属性 --%>
	<%! int num=12; %>
	</table>
</body>
</html>

JSP源码编译后的位置:在Eclipse中,这些文件可能会被存放在类似workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost的路径下。

1.JSP的九个内置对象

JSP有以下九个内置对象:

  1. pageContext:代表JSP页面的上下文,可以通过该对象访问其他内置对象。

  2. request:代表客户端的HTTP请求。可以通过该对象获取请求的参数、请求头、请求方式等信息。

  3. session:代表用户的会话。可以通过该对象在用户多次请求之间共享数据。

  4. application:代表整个应用程序的上下文。可以通过该对象在整个应用程序范围内共享数据。

  5. page:代表当前JSP页面本身,可以通过该对象调用当前页面的方法。

  6. response:代表服务器对客户端的HTTP响应。可以通过该对象设置响应的内容、响应头、响应状态码等信息。

  7. out:用于输出响应内容的输出流对象。

  8. config:代表当前JSP页面的配置信息对象,可以通过该对象获取JSP页面的初始化参数。

  9. exception:用于处理页面发生的异常,可以通过该对象获取页面上抛出的异常信息。


2.JSP内嵌的三种Java脚本

(1)打印脚本

使用<%= %>标签将一个表达式的结果输出到JSP页面中。表达式中可以是任意的Java表达式,包括变量、方法调用、运算等。表达式会自动进行类型转换,并将结果输出到客户端。

(2)运行脚本

使用<% %>标签将Java代码嵌入到JSP页面中。在脚本表达式中,可以执行任意的Java代码,并且可以访问和操作JSP页面中的内置对象。

(3)声明脚本

使用<%! %>标签在JSP页面中定义Java方法、变量等。声明块中定义的内容可以在整个JSP页面中使用,并且在脚本表达式中可见。

  • 31
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,确保你已经成功安装了 IntelliJ IDEA 2022 和 Tomcat 服务器。接下来,按照以下步骤配置 Tomcat 并创建 Servlet 项目: 1. 打开 IntelliJ IDEA,从菜单栏选择 "File" -> "New" -> "Project"。 2. 在左侧选择 "Java",然后在右侧选择 "Web Application",点击 "Next"。 3. 输入项目的名称,选择项目的位置,然后点击 "Next"。 4. 在 "Server" 配置页面,点击 "Configure" 按钮。 5. 在 "Tomcat Server" 配置页面,选择 "Local",然后点击 "Configure" 按钮。 6. 在 "Tomcat Server" 配置页面,选择 "Tomcat Home",然后选择你安装的 Tomcat 的根目录。 7. 在 "Tomcat Server" 配置页面,选择 "Tomcat Base Directory",然后选择一个目录,这个目录将用于存储 Tomcat配置和日志文件。 8. 点击 "OK" 保存配置。 9. 在 "Server" 配置页面,选择 "Tomcat",然后选择你刚刚配置Tomcat 版本。 10. 点击 "Next",然后在 "Additional Libraries and Frameworks" 页面中,确保 "Java EE" 处于选中状态。 11. 点击 "Finish" 完成项目的创建。 现在你已经成功创建了一个 Servlet 项目,并且将 Tomcat 服务器与 IntelliJ IDEA 集成。下一步是创建一个 Servlet 类: 1. 在 IntelliJ IDEA 中,从菜单栏选择 "File" -> "New" -> "Servlet"。 2. 在 "Create Servlet" 对话框中,输入 Servlet 类的名称,选择包名,然后点击 "OK"。 3. 在 "doGet" 方法中,添加以下代码: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello, world!"); } ``` 4. 点击 "Run" 按钮,选择 "Run 'Tomcat...'",然后等待 Tomcat 服务器启动。 5. 在浏览器中访问 http://localhost:8080/你的项目名称/你的Servlet类名称,你应该能够看到 "Hello, world!" 的输出。 现在你已经成功创建了一个 Servlet 项目,并且可以在 Tomcat 服务器上运行它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值