什么是servlet
jsp页面的前身是servlet, 但是servlet和jsp是两个不同概念
servlet是运行在服务器端的一段程序, 是可以直接运行一段java后台代码
servlet特点:
1, 功能强大
2, 可移植性
3, 速度快, 性能高
4, 安全性高
5, 可扩展(面向对象)
与jsp的区别(先了解一下MVC模式的编程):
1, 角色不同(视图层和控制层)
2, 编程方法不同
3, 是否需要重新编译
4, 运行速度不同
servlet的代码结构
public class 类名 extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
...执行代码块
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
...执行代码块
}
}
在web.xml中配置servlet的访问路径
<servlet>
<servlet-name>定义一个名字</servlet-name>
<servlet-class>servlet类的全路径名(选中类名右键点复制限定名, 贴在这里)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>与上面定义的名字一模一样<servlet-name>
<url-pattern>/请求的路径(与页面上的一模一样)</url-pattern>
</servlet-mapping>
servlet生命周期:
init();----初始化一个servlet类的实例, 这个方法只会执行一次
可以在web.xml中配置, <load-on-startup></load-on-startup>, 标签中写一个int型数字, 当这个值为0或者不配置这个标签的时候, 这个servlet将会在使用的时候才会去初始化, 其他数字会在 tomcat服务器运行的时候就加载, 数字越小, 优先级越高
service()方法
这个方法是响应客户请求的, 这个方法的执行来决定这个servlet是该调用doPost还是doGet
destory();----销毁一个servlet类的实例
停止tomcat的时候会调用此方法, 来销毁servlet实例对象, 释放资源
servlet中的9大内置对象
request
response
out--->response.getWriter(){注意, 这里的out跟response.getWriter()是有区别的}
application--->request.getServletContext()
session--->request.getSession()
pageContext--->参考jsp中pageContext的获取过程
page--->this对象
exception--->抛出的异常对象
config---调用父类的getServletConfig()
package text;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet{
/*
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
System.out.println("执行servlet中的service方法!");
}
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行servlet中的doGet方法!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行servlet中的doPost方法!");
}
package text;
import java.io.IOException;
import javax.servlet.ServletConfig;
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 TextServlet2
*/
@WebServlet("/TextServlet2")
public class TextServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TextServlet2() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/* String name = request.getParameter("username");
request.getServletContext();
request.getSession();
response.getWriter();
System.out.println(name);*/
/*出现乱码 */
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String realname = request.getParameter("realname");
response.getWriter().append("username"+username+"
password"+password+"
realname"+realname);
}
/**
* @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);
}
@Override
public void init(ServletConfig config) throws ServletException {
}
/* @Override
public void destroy() {
System.out.println("servlet被销毁");
}
@Override
public void init() throws ServletException {
System.out.println("初始化servlet");
}
*/
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>hanqi</servlet-name>
<servlet-class>text.TestServlet</servlet-class>
<!-- 启动时加载 -->
<!-- 当这个标签中的数字是0或者不配置这个标签的时候,servlet默认使用的时候加载 -->
<!-- 数字不是0的时候,为启动服务器加载,数字越小优先级越高 -->
<load-on-startup>1</load-on-startup>
<!-- <init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param> -->
</servlet>
<servlet-mapping>
<servlet-name>hanqi</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
</web-app>
<%@ 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>
<a href="TextServlet2?username=aaaa">测试Servlet链接</a><br>
<form action="TestServlet" method="post">
<input type="submit" value="aaa" >
</form>
</body>
</html>
<%@ 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>
<form action="TextServlet2" method="post">
<input name="username" type="text" /><br>
<input name="password" type="text" /><br>
<input name="realname" type="text" /><br>
<input type="submit" value="提交" />
</form>
</body>
</html>