Servlet入门笔记
Servlet简介
B/S开发模式执行流程 请求与响应 从浏览器发出送给服务器的数据包称为“请求(Request)" 从服务器返回给浏览器的结果称为“响应(Response)" J2EE简介 J2EE (Java 2 Platform Enterprise Edition)是指“Java 2企业版” B/S模式开发Web应用就是J2EE最核心的功能 J2EE由13个功能模块组成 Servlet: web服务器小程序 JSP: 服务器页面 JDBC: 数据库交互模块 XML: XML交互模块 EJB: 企业级Java Bean RMI: 远程调用 JNDI: 目录服务 JMS: 消息服务 JTA: 事务管理 JavaMail: 发送/接收Email JAF: 安全框架 CORBA: CORBA集成 JTS: CORBA事务监控 Servlet简介 Servlet (Server Applet)服务器小程序,主要功能用于生成动态Web内容 Servlet是J2EE最重要的组成部分,也是学习的重点 Apache Tomcat简介 Tomcat是Apache 软件基金会旗下一款免费的开放源代码的Web应用服务器程序 Tomcat是运行Servlet(服务器小程序)的容器
Tomcat的配置方法
Tomcat的目录结构简介 bin: 保存了启动文件的文件夹 conf: 保存了配置文件,核心的文件是servlet.xml lib: 保存了Tomcat的第三方依赖包 logs: 保存了日志数据, Tomcat运行中出现问题会记录在这里 temp: 保存了临时文件,Tomcat运行中出现的临时数据文件会保存在这里 webapps: 保存了开发的应用程序的目录,web应用程序保存在这里 work: 保存了JSP翻译后的Java源代码,和编译后的字节码文件,现已过时不再用 使用Tomcat的前置条件
安装JDK 1.8以上的版本 配置JAVA_HOME的环境变量
启动Tomcat程序 在bin目录下点击startup.bat文件启动
Tomcat和IDEA的整合
Projects -> New Project -> Maven -> 创建一个项目工程 在main文件夹下创建一个webapp文件夹用来保存web应用的相关资源 点击File -> Project Structure -> Modules -> 点击 “+” 号 -> Web -> 修改Web Module Deployment Descriptor的Path,将默认的web文件夹改为src/main/webapp,选择合适的文件描述符版本 修改Web Resource Directory到webapp文件夹下 点击Create Artifact,OK完成 如果webapp前出现蓝点则代表配置成功
点击右上方的Add Configurations -> Edit configuration templates -> Tomcat Server -> Local 修改Application server为当前的Tomcat路径 取消默认勾选After launch 启动Tomcat时自动打开浏览器 点击Deployment -> 选择 “+” 号 -> Artifact 修改Application context(应用上下文即访问web应用资源的网址前缀已过时不再使用)为’/’ ,点击OK完成 再次点击Add Configurations -> 选择 “+” 号 -> Tomcat Server -> Local -> OK完成
Servlet开发流程
在main文件夹下创建servlet文件 在pom.xml中添加servlet依赖 在servlet文件中继承HttpServlet父类,并重写service方法 在web.xml中配置servlet和它的映射 启动Tomcat,运行程序完成
public class FirstServlet extends HttpServlet {
@Override
protected void service ( HttpServletRequest req, HttpServletResponse resp) throws ServletException , IOException {
String name = req. getParameter ( "name" ) ;
String html = "<h1 style='color: red'>hi," + name + "!</h1><hr/>" ;
System . out. println ( "返回给浏览器的响应内容为:" + html) ;
PrintWriter out = resp. getWriter ( ) ;
out. println ( html) ;
}
}
< dependencies>
< dependency>
< groupId> javax.servlet</ groupId>
< artifactId> javax.servlet-api</ artifactId>
< version> 4.0.0</ version>
</ dependency>
</ dependencies>
< servlet>
< servlet-name> first</ servlet-name>
< servlet-class> FirstServlet</ servlet-class>
</ servlet>
< servlet-mapping>
< servlet-name> first</ servlet-name>
< url-pattern> /hi</ url-pattern>
</ servlet-mapping>
Servlet执行的流程
标准Java Web工程结构
/: Java Web应用根目录 /index.html: 默认首页 /WEB-INF: WEB应用的安全目录,用于存放配置文件 /WEB-INF/web.xml: web.xml是“部署描述符文件”,是该Web项目核心配置文件 /WEB-INF/classes: 存放编译后的classes文件 /WEB-INF/lib: 用于存放web应用依赖的jar文件 /META-INF/MANIFEST.MF: 包含Web应用的版本等信息
请求参数
请求参数是指浏览器通过请求向Tomcat提交的数据 请求参数通常是用户输入的数据,待Servlet进行处理 参数名1=值1&参数名2=值2&参数名n=… Servlet接收请求参数 request.getParameter() - 接收单个参数 request.getParameterValues() - 接收多个同名参数
Get与Post请求方法
Get方式将请求参数附加在访问地址后显性向服务器发送的方式。 http://localhost:8080/sample?name=zhangsan Post方式会将数据存放在”请求体”中隐性向服务器发送的方式。 http://localhost:8080/sample 请求体:name=zhangsan Get常用于不包含敏感信息的查询功能 例如:https://www.baidu.com/s?wd=imooc&rsv_spt=1 Post用于安全性要求较高的功能或者服务器的”写“操作 用户登录 用户注册 更新公司账目 Get与Post请求的处理方式 所有请求- service()方法 Get请求- doGet()方法 Post请求- doPost()方法
public class RequestMethodServlet extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException {
String name = request. getParameter ( "name" ) ;
PrintWriter out = response. getWriter ( ) ;
out. println ( "<h1>GET:name:" + name + "</h1>" ) ;
}
@Override
protected void doPost ( HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException {
String name = request. getParameter ( "name" ) ;
PrintWriter out = response. getWriter ( ) ;
out. println ( "<h1>Post:name:" + name + "</h1>" ) ;
}
}
Servlet生命周期
Servlet采用单例多线程,全程只有一个对象,但会对每个用户的请求都创建一个线程 装载 – web.xml 创建 – 构造方法 //在第一次访问Servlet时使用 初始化 – init() //在第一次访问Servlet时使用 提供服务 – service() //在每次访问Servlet时使用 销毁 – destory() //在Tomcat服务器停止前使用
使用注解配置Servlet
Servlet 3.x之后引入了“注解Annotation”特性 注解用于简化Web应用程序的配置过程 Servlet核心注解: @WebServlet