java web--Servlet技术(一)

java web--Servlet技术(一)

  在Web应用程序开发中,一般由JSP技术、JavaBean技术和Servlet技术结合实现MVC开发模式。在开发MVC模式(模型-视图-控制器模式)中,将Web程序的组件分为三部分:视图、控制、业务模型,分别由JSP、Servlet和JavaBean实现。

目录

一、Servlet技术概述

二、Servlet的基本结构与配置方式

三、JSP与Servlet的关联关系


一、Servlet技术概述

1.Servlet编程接口

(1)、Servlet是用java语言编写的服务器端程序,是由服务器端调用和执行的、按照Servlet自身规范编写的java类。Servlet可以处理客户端传来的HTTP请求,并返回一个响应。

(2)、Servlet框架是由javax.servlet和javax.servlet.http两个java包组成的。

Servlet常用编程接口
功能 类和接口
Servlet实现 javax.servlet.Servlet    javax.servlet.http.HttpServlet
请求和响应

javax.servlet.ServletRequest javax.servlet.ServletResponse

javax.servlet.http.HttpServletRequset

扫描二维码关注公众号,回复: 11230365 查看本文章

javax.servlet.http.HttpServletResponse

会话跟踪 javax.servlet.http.HttpSession
Servlet协作

javax.servlet.RequestDispatcher

二、Servlet的基本结构与配置方式

  1.开发设计一个Servlet就是开发一个遵守规范中所规定的各种特征的java类

  2.设计Servlet的三种方法实现

(1).实现Servlet接口,创建Servlet。

(2).继承GenericServlet,创建Servlet。

(3).继承HttpServlet,创建Servlet。在Servlet开发时,通常采用继承HttpServlet子类实现。

3.Servlet配置方法

Servlet需要配置,只有配置后才能可以使用。所谓配置就是将所创建的Servlet类映射为一个可以直接访问的URL地址。

(1).在Web配置文件web.xml中配置。

(2).直接在Servlet程序源代码中采用注释配置。(常用方法)

该访问地址为:http://localhost:8080/java第十一周2/a01a

三、JSP与Servlet的关联关系

1.在JSP页面中调用Servlet

(1).通过表单提交调用Servlet

(2).通过超链接调用Servlet

2.Servlet跳转到JSP

(1).转向

RequestDispatcher rd=request.getRequsetDispatcher("jsp网页");
rd.forward(request,response);

(2).重定向

response.sendRedirect("jsp网页地址");

3.Servlet调用另一个Servlet

一个Servlet调用另一个Servlet的调用格式同Servlet调用JSP的格式相同,只是将JSP网页地址更换为Servlet映射地址即可。

4.例题:设计一个Web程序,基于jsp+servlet,当用户在提交页面输入圆的半径,提交后显示圆的周长和面积。

<%@ 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>提交页面</title>
</head>
<body>
<p>请输入圆的半径</p>
<hr>
<form action="../a01a" method="post">
<table>
<tr><td>圆的半径:</td><td><input name="radius"></td></tr>
<tr><td><input type="submit" value="确认"></td><td><input type="reset" value="取消"></td></tr>
</table>
</form>
</body>
</html>
package aaa;

import java.io.IOException;
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 a01a
 */
@WebServlet("/a01a")
public class a01a extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public a01a() {
        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
		doPost(request,response);//调用doPost,实现与doPost相同的功能
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String number=request.getParameter("radius");//获取数据
		double r=Double.parseDouble(number);
		double mj=r*r*Math.PI;
		double zc=2*r*Math.PI;//进行运算
		request.setAttribute("mj", mj);//传递数据
		request.setAttribute("zc", zc);
		request.getRequestDispatcher("/a01/a01c.jsp").forward(request, response);//跳转到a01c.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>输出页面</title>
</head>
<body>
<%
out.println("面积为  "+request.getAttribute("mj"));
out.println("<br>");
out.println("周长为  "+request.getAttribute("zc"));
%>
</body>
</html>

5.例题:设计一个Web程序,基于jsp+servlet+javabean,当用户在提交页面输入圆的半径,提交后显示圆的周长和面积。

<%@ 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>提交页面</title>
</head>
<body>
<p>请输入圆的半径</p>
<hr>
<form action="../a02b" method="post">
<table>
<tr><td>圆的半径:</td><td><input name="radius"></td></tr>
<tr><td><input type="submit" value="确认"></td><td><input type="reset" value="取消"></td></tr>
</table>
</form>
</body>
</html>
package aaa;

public class a02a {
private double radius;

public a02a() {
	super();
	// TODO Auto-generated constructor stub
}

public a02a(double radius) {
	super();
	this.radius = radius;
}

public double getRadius() {
	return radius;
}

public void setRadius(double radius) {
	this.radius = radius;
}
public double mj()
{
	return Math.PI*radius*radius;
}
public double zc()
{
	return Math.PI*2*radius;
}
}
package aaa;

import java.io.IOException;
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 a02b
 */
@WebServlet("/a02b")
public class a02b extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public a02b() {
        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
		doPost(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String number=request.getParameter("radius");
		double r=Double.parseDouble(number);
		a02a aa=new a02a(r);
		double mj=aa.mj();
		double zc=aa.zc();
		request.setAttribute("mj", mj);
		request.setAttribute("zc", zc);
		request.getRequestDispatcher("/a02/a02d.jsp").forward(request, response);
	}

}
<%@ 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>输出页面</title>
</head>
<body>
<%
out.println("面积为  "+request.getAttribute("mj"));
out.println("<br>");
out.println("周长为  "+request.getAttribute("zc"));
%>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_43238335/article/details/105964695