Servlet 第二章 跳转页面、参数传递、生命周期

1、Servlet生命周期

a) Servlet生命周期定义为从创建到销毁的过程,遵循的过程为:

i. Servlet调用init()方法进行初始化;

ii. Servlet调用service()方法来处理客户端的请求;

iii. Servlet调用destory()方法终止销毁;

iv. 最后,Servlet是通过JVM的垃圾回收机制进行回收的;

v. 实例:

package com.ittx.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ittx.java.db.util.DBConnection;

public class HelloServlet extends HttpServlet{
	
	public void init(ServletConfig config) throws ServletException{
		System.out.println("init 初始化servlet方法>>>>>>>>");
	}
	
	protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException{
		System.out.println("doget 执行get方法>>>>>>");
		String userName = request.getParameter("userName");
		String passWord = request.getParameter("password");
		System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
	}
	
	protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException , IOException{
		System.out.println("dopost 执行post方法>>>>>");
		String userName = request.getParameter("userName");
		String passWord = request.getParameter("password");
		System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);	
		PrintWriter printWriter = response.getWriter();
		printWriter.println("<h1>"+userName+" "+passWord+"</h1>");
		printWriter.flush();
		printWriter.close();
	}
	
	public void destory(){
		System.out.println("destory 销毁servlet方法>>>>>");
	}
	
	public void query() throws ClassNotFoundException, SQLException{
		Connection connection = null;
		PreparedStatement p = null;
		connection = DBConnection.getConnection();	
	}
}

2Servlet跳转界面的两种方式

a) 转发请求 :客户端向Servlet发送一个请求后,该Servlet会向本身再发送一次请求到另一URL,在这个过程中,只向服务器发送一次请求,效率非常高;

i. 实例:

	protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException , IOException{
	//	System.out.println("dopost 执行post方法>>>>>");
		String userName = request.getParameter("userName");
		String passWord = request.getParameter("password");
	//	System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
		
		if("admin".equals(userName)){
			request.getRequestDispatcher("fail.html").forward(request, response);
			
		}else{
			request.getRequestDispatcher("success.html").forward(request, response);
			
		}
	}

b) 重定向 :客户端向Servlet发送一个请求后,经过当前的Servlet方法后,会向服务器再一次发送请求,重新定向到指定的URL,也就是说,在这个过程中,Servlet要向服务器请求两次,才能转到请求的URL

i. 实例:

	protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException , IOException{
	//	System.out.println("dopost 执行post方法>>>>>");
		String userName = request.getParameter("userName");
		String passWord = request.getParameter("password");
	//	System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
		
		if("admin".equals(userName)){
			response.sendRedirect("fail.html");
		}else{
			response.sendRedirect("success.html");
		}
	}

c)重定向与请求转发的区别:

地址

请求转发:

http://192.168.1.4:8080/web-servlet/
http://192.168.1.4:8080/web-servlet/sendServlet
重定向:
http://192.168.1.4:8080/web-servlet/
http://192.168.1.4:8080/web-servlet/fail.html

3、Servlet实例化/初始化参数传递

a) 可以通过在web.xml中配置参数来传递参数

b) 实例:

1):配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID">
	<display-name>web-servlet</display-name>
	<!-- 配置Servlet名字 -->
  <servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<servlet-class>com.ittx.web.servlet.HelloServlet</servlet-class>
  </servlet>
  	<!-- 配置Servlet访问路径 -->
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>SendServlet</servlet-name>
  	<servlet-class>com.ittx.web.servlet.SendServlet</servlet-class>
  	<!-- 配置参数 -->
  	<init-param>
  	<!-- 用户名参数 -->
  		<param-name>userName</param-name>
  		<param-value>root</param-value>
  	</init-param>
  	<init-param>
  	<!-- 密码参数 -->
  		<param-name>password</param-name>
  		<param-value>123456</param-value>
  	</init-param>
  	<!-- 设置加载顺序,数字由小到大,依次后排 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>SendServlet</servlet-name>
  	<url-pattern>/sendServlet</url-pattern>
  </servlet-mapping>

	<welcome-file-list>
		<welcome-file>hello2.html</welcome-file>
	</welcome-file-list>
</web-app>
2)Servlet代码

public void init(ServletConfig config) throws ServletException{
		System.out.println("init 初始化servlet方法>>>>>>>>");
		String name = config.getInitParameter("userName");
		String password = config.getInitParameter("password");
		System.out.println("name"+name+">>>>>"+"passWord"+password);
	}

1、资源项目源码均已通过严格测试证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值