


Servlet 是 Java Web 技术的核心基础。Servlet 是一种运行在支持 Java 语言的服
务器上的组件,它与普通 Java 类的区别是它必须运行在服务器中。使用 Servlet 可以实
现很多网络服务功能,为网络客户提供安全可靠的、易于移植的动态网页。由于 Java 语
言的平台无关性,加之 Servlet 是运行在服务端,所以对于网络用户,Servlet 的运行是
完全透明的。
Servlet 容器的作用是处理客户端的请求,并将处理结果返回给客户端。在 Servlet
容器中,当客户请求到来时,Servlet 容器获取请求,然后调用某个 Servlet,并把 Servlet
的执行结果返回给客户。Tomcat 就是这样的一个 Servlet 容器。
在没有 JSP 之前,就已经出现了 Servlet 技术,JSP 是 Servlet 的扩展。Servlet 是
利用输出流动态生成 HTML 页面,包括每一个 HTML 标记和每个在 HTML 页面中出现的内容。
在 JSP 出现之前,由于包括大量的 HTML 标记、大量的静态文本及格式等,导致 Servlet
的开发效率极为低下。所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在 Java
9899
代码中。JSP 的出现弥补了这种不足,JSP 通过在标准的 HTML 页面中插入 Java 代码,其
静态的部分无须 Java 程序控制,只有那些需要从数据库读取并根据程序动态生成信息时,
才使用 Java 脚本控制。
从表面上看,JSP 页面已经不再需要 Java 类,似乎完全脱离了 Java 面向对象的特征。
事实上,JSP 是 Servlet 的一种特殊形式,每个 JSP 页面就是一个 Servlet 实例,JSP 页
面由系统编译成 Servlet,Servlet 再负责响应用户请求。JSP 其实也是 Servlet 的一种
简化,使用 JSP 时,其实还是使用 Servlet,因为 Web 应用中的每个 JSP 页面都会由 Servlet
容器生成对应的 Servlet。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Servlet01" method="post">
账号:<input type="text" name="account" />${accountErrorString }<br>
密码:<input type="password" name="psd" />${psdErrorString }<br>
<input type="submit" value="提交" /><br>${errorString }
</form>
</body>
</html>
package first;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.jasper.tagplugins.jstl.core.Out;
/**
* Servlet implementation class Servlet01
*/
@WebServlet("/Servlet01")
public class Servlet01 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet01() {
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());
String account=request.getParameter("account");
String psd=request.getParameter("psd");
PrintWriter out=response.getWriter();
out.println(account);
out.println(psd);
Enumeration<String> headers=request.getHeaderNames();
response.setContentType("text/html;charset=utf_8");
while(headers.hasMoreElements()) {
String header_name=headers.nextElement();
String header_value=request.getHeader(header_name);
out.println("<h1>"+header_name+":"+header_value+"h1");
}
out.println("<h1>"+request.getRemoteAddr()+"<h1>");
}
/**
* @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);
}
}


2499

被折叠的 条评论
为什么被折叠?



