web上课内容——服务器上的数据传递

一、定义

       1.  服务器上一个Servlet把数据传递到另一个Servlet的这种数据传递,我们称为服务器上的数据传递。

        2. 程序把需要传递的数据进行保存:request.setAttribute(String“属性名”, Object o);(o是可以各种数据类型的对象,但设置后会作为Object类型保存在属性中)

        3. 进行转发。转发:把当前程序的请求和响应对象传递给下面的程序,并运行调用下面这个程序。request.getRequestDispatcher("Servlet2").forward(request, response)

        4. 程序获取数据:request.getAttribute(String“属性名”);接受到的值是Object类型对象,需要强制类型转换。

        5. 处理之后再生成响应给浏览器。

二、上课例子——从Servlet1传递数据给Servlet2,并在网页上进行显示。

        1. 按照以下文件目录进行Servlet1和Servlet2的文件创建。

        2. Servlet1的编程代码如下:

package x;

import java.io.IOException;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Servlet1
 */
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet1() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		
		// 创建需要传递给另外一个Serlvet的数据
		String s = "Servlet1中的字符串";
		Date d = new Date();
		
		// 创建传递对象
		request.setAttribute("aa", s);
		request.setAttribute("bb", d);
		
		// 创建响应对象
		RequestDispatcher rd= request.getRequestDispatcher("Servlet2");
		rd.forward(request, response);
		// 上面两句语句可以转换为下面一句话
		// request.getRequestDispatcher("Servlet2").forward(request, response)
	}

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

}

        3. Servlet2的编程代码如下:

package x;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Servlet2
 */
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet2() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		
		// 接收另外一个servlet传递过来的数据(接收时需要进行类型转换)
		String s = (String)request.getAttribute("aa");
		Date d = (Date)request.getAttribute("bb");
		
		
		// 解决将数据传递给网页时的中文显示问题
		response.setContentType("text/html;charset=UTF-8");
		
		// 以下为服务器上html网页的标准写法
		//---------------------------------------------------------------------//
		// 进行网页显示代码编辑
		PrintWriter out = response.getWriter();
		try {
			out.println("<html>");
			out.println("<head><title>first servlet</title></head>");
			out.println("<body>");
			out.println("<p><h1>服务器上的数据传递</h1></p>");
			out.println("<div style = color:red>");
			out.println("<p>接收到的第一个数据是:" + s + "</p>");
			out.println("<div style = color:blue>");
			out.println("<p>接收到的第二个数据是:" + d + "</p>");
			out.println("</body>");
			out.println("</html>");
			
		}finally {
			out.close();
		}
		//---------------------------------------------------------------------//
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

        4. 网页展示如下:

 

三、上课练习题

        1. 题目:用表单提交一个数字给Servlet1,在Servlet1中写算法判断这个数字是否是素数,后把数字和结果转发给Servlet2,Servlet2生成网页发给。

        2. 创建文件目录如下:

        3. NewFile.html代码编辑如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<from>
 
<!-- 将网页生成的数据传递到以下的url中,该url由servlet文件创建的 -->
<form action="Servlet1">
 
<!-- 用户名输入框 -->
输入一个需要传递的数据:<input type="text" name="n"><br>
<!-- 提交按钮 -->
<input type="submit">
 
</form>
</body>
</html>

        4. Servlet1编程代码如下:

package x;

import java.io.IOException;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Servlet1
 */
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /*
     * @see HttpServlet#HttpServlet()
     */
    public Servlet1() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		
		// 创建需要传递给另外一个Serlvet的数据
		int s = Integer.valueOf(request.getParameter("n"));
		String jg = "是素数";
		
		// 判断一个数是否为素数
		for(int i=2; i<s; i++) {
			if(s % i == 0) {
				jg = "不是素数";
				break;
			}
		}
		
		// 创建传递对象
		request.setAttribute("aa", s);
		request.setAttribute("bb", jg);
		
		// 创建响应对象
		RequestDispatcher rd= request.getRequestDispatcher("Servlet2");
		rd.forward(request, response);
		// 上面两句语句可以转换为下面一句话
		// request.getRequestDispatcher("Servlet2").forward(request, response)
	}

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

}

        5. Servlet2编程代码如下:

package x;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Servlet2
 */
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet2() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		
		// 接收另外一个servlet传递过来的数据(接收时需要进行类型转换)
		int s = (int) request.getAttribute("aa");
		String jg = (String) request.getAttribute("bb");
		
		
		// 解决将数据传递给网页时的中文显示问题
		response.setContentType("text/html;charset=UTF-8");
		
		// 以下为服务器上html网页的标准写法
		//---------------------------------------------------------------------//
		// 进行网页显示代码编辑
		PrintWriter out = response.getWriter();
		try {
			out.println("<html>");
			out.println("<head><title>first servlet</title></head>");
			out.println("<body>");
			out.println("<p><h1>服务器上的数据传递</h1></p>");
			out.println("<div style = color:red>");
			out.println("<p>从网页上接收到的数字是:" + s + "</p>");
			out.println("<div style = color:blue>");
			out.println("<p>接收到数字" + s + jg + "。</p>");
			out.println("</body>");
			out.println("</html>");
			
		}finally {
			out.close();
		}
		//---------------------------------------------------------------------//
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

        6. 网页展示如下:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值