[TOC]
# Servlet
## 什么是 Servlet
在 Web 容器中有浏览器访问地址的特殊 Java 类。
在开发中,Servlet 一般充当的就是控制器的角色。
## 如何创建 Servlet
创建带注解的 Servlet
*第一个 Servlet*
~~~
package com.ntqn.servlet;
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 IndexServlet
*/
@WebServlet("/IndexServlet.php")
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public IndexServlet() {
// 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("<h1>Hello,Sevlet</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);
}
}
~~~
> 1、需要继承 HttpServlet;
> 2、相关 Servlet 的类文件不是存在于 JDK 的标准开发包中的,而是存在于 Tomcat 的 lib 中servlet-api.jar 中
> 3、在 Servlet 中存在 doPost 和 doGet 方法,我们一般会任一方法中调用另外一个方法,因为doPost 和 doGet 的客户端请求不一样,但是一般业务处理逻辑都是一样的;
> 4、在类的注解中 @WebServlet("/IndexServlet2.php"),表示执行该 Servlet 的请求路径;
> 5、Servlet 可以在 Eclipse 中进行引导式的创建,但是其本质还是一个普通的 class 文件,并无特殊之处,只不过是需要 web 容易的支持才能运行的。
## Servlet的页面跳转
**进行服务器的跳转 - 转发**
`request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);`
在实际开发中,我们会把 jsp 页面放到 WEB-INF 中,在 WEB-INF 中的资源属于服务端的资源,是不能被外部链接直接访问的。
在 WebContent 的直接目录下,我们一般放置静态资源,比如图片、CSS、Javascript 等。但是也有特殊的情况,有的应用做的比较好,会被上述的静态资源也通过 Servlet 进行转化后访问。
**进行客户端的跳转 - 重定向**
`response.sendRedirect("pages/index3.jsp");`
在客户端跳转中是**不可以**使用` request.setAttribute()` 进行赋值后在跳转到的 jsp 通过 **request.getAttribute()** 获取值的,一定要理解什么是服务器端跳转,什么是客户端跳转,和值应该用什么方式传递。
> **整个 Web 应用程序的开发可以理解为就是一个传值的游戏。**
- 前言
- 计算机概论
- 数据库
- 数据库介绍
- MySQL的安装
- SQL
- 表基本操作
- 修改数据语句
- 数据检索操作
- 多表数据操作
- 表结构设计
- 综合应用
- JAVA
- JAVA 介绍
- JAVA 运行原理
- JDK 配置
- 类和对象
- 数据类型
- 变量
- 直接量
- 运算符
- 流程控制
- 数组结构
- 面向对象
- 隐藏和封装
- 深入构造器
- 类的继承
- 多态
- 包装类
- final 修饰符
- 抽象类
- 接口
- 集合框架
- 常用类学习
- 异常处理
- 设计模式-单例模式
- JDBC
- JSP&Servlet
- Web应用
- Tomcat
- JSP
- Scriptlet
- Page 指令
- 包含指令
- 跳转指令
- 用户注册实例
- JSP练习
- 内置对象
- Servlet
- 过滤器
- Web分层思想
- EL表达式
- JSTL
- 分页实现
- AJAX&JSON
- 开发步骤
- 路径问题
- Log4j
- 电子书城
- 案例分析
- 核心代码
- Java 高级
- 文件操作
- 泛型
- 类加载机制和反射
- 注解 Annotation
- Mybatis框架
- 框架介绍
- Mybatis简单实现
- 表基本操作
- 优化配置文件
- 表字段名与实体类属性名不同的解决方案
- 一对一关联
- 一对多关联
- 教学管理
- 学员名录
- 周测统计
- 2017-10-27
- 2017-11-03
- 2017-11-10
- 2017-11-17
- 课堂作业
- 班会纪要
- 2017-10-24
- 缺勤记录
- 班级备忘录
- 违纪统计
- 编程素养
- Day001
- Day002
- Day003
- Day004
- Day005
- Day006
- Day007
- Day008
- Day009
- Day010
- Day011
- Day012
- Day013
- Day014
- Day015
- Day016
- Day017
- Day018
- Day019