Servlet学习笔记(1)
Servlet:Sun公司制订的一种用来扩展Web服务功能的组间规范。
第1部分 C/S和B/S介绍
1 C/S
Client Server
客户端 服务器程序;
客户端需要单独开发,用户需要下载并安装;
2 B/S
Browser Server
浏览器 服务器程序;
客户端不用单独开发,用户不用单独安装;
第2部分 Servlet介绍
2.1 服务器如何保存病返回一个网页?
区分动静态网页在于内容是否变化。
1)静态网页:无论谁看其内容都是一样的。
如:百度百科、新闻等。
服务器直接存HTML,直接返回HTML即可。
1) 动态网页:不同人用返回的结果不一样,不同人看到的不一样。
如:淘宝(根据你喜好变化)、微博等。
服务器保存一个组件,动态给每个用户拼一个网页。在Java中这个组件就是Servlet。
组件就是满足规范的对象。
2.2 Servlet特点
是服务器短的组件;
满足Sun的规范;
可以动态拼资源(HTML/IMG等);
术语:处理HTTP协议;
2.3什么是Servlet
Sun推出的用于在服务器端 拼动态资源/处理HTTP协议 的组件。
第3部分 服务器介绍
3.1 名称
Java服务器
WEB服务器
Java WEB服务器
Servlet容器
都是指服务器,只是内容来称呼了而已。
3.2 服务器的本质
是一个软件;
它和浏览器是对等/平级关系。
3.3 服务器产品
既然是软件就有很多厂家来开发,由不同产品,如:
Tomcat(Apache)
JBoss
WebLogic
WebSphere等
第4部分 Tomcat两种使用方式
4.1 单独使用(项目上线时)
基本上是由实施人员来做的
1) 配置好JAVA_HOME
2) 下载和安装,Apache官网
4.2 通过Eclipse调用(必须要会,开发时使用),做小案例时介绍使用
第5部分 Servlet开发步骤
5.1 创建WEB项目(在JavaEE模式下建立,最好使用Maven)
5.1.1必须具备标准WEB目录/webapp/WEB_INF/web.xml,所以创建完成需要在Deployment Descriptor:项目名 上右击选择Generate Deployment Descriptor ,然后生成标准Web项目目录,报错就消失了;
5.1.2创建Maven时packaging选war;
5.2 导入jar包
5.2.1使用Maven导包
因为使用外网可能会失败,当然也可以配置阿里云
--使用Maven搜索javaee
--在结果中选择Javaee-api
5.2.2 使用tomcat自带的包
--当前项目右键properties
--选择Targeted Runtimes 选择Apache Tomcat ,Apply and Close
5.3 开发Servlet项目
5.3.1编写Servlet
--package
--创建一个类,名为XxxxServlet
--继承HttpServlet,从而间接的实现了Servlet接口
--重写父类的service()
在新建的类(使用的是Eclipse)里面右键source -- Override/Implement Methods 选
择service(注意有两个,选下图圈的那个)
5.3.2 配置Servlet
--先声明类,并给它取别名;
--再通过别名引用此类,给他取一个访问路径;
5.3.3部署(通俗来说就是拷贝)
--在Servers视图下,选择tomcat7,右键Add and Remove
--在弹出框将左侧待部署项目移动到右侧,点击OK;
--启动tomcat部署即完成!
5.4访问
--http://ip:port/项目名/网名
第6部分 小案例代码
功能:服务器返回当前时间,用HTML显示
Java代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/** * 功能:服务器返回当前时间 * * 错误404:找不到资源,一般是路径不对,没有匹配; * 错误500:1 类名有误;2 代码有误; * 错误405:方法声明有误 * * 在创建类的时候就实现HttpServlet的继承,以免自己写继承写错字母; */ package web; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TimeServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //super.service(req, resp); //这句调父类的,不需要,删除 res.setContentType("text/html"); //声明向网页发什么类型文件;这里发送的是网页,如果格式写错浏览器会让你保存而不是显示内容 PrintWriter out = res.getWriter(); Date date = new Date(); //创建一个时间 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String now = sdf.format(date); /*此处偷懒了,省略了网页的基本结构,之后再改进*/ out.println("<p>"+ now + "</p>"); out.close(); } }
配置文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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_2_5.xsd" version="2.5"> <display-name>servletDay01</display-name> <!-- 欢迎界面,可删除,没什么用 --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 1 声明Servlet的类型,并给他去一个别名,为了当前页面引用方便 --> <servlet> <servlet-name>time</servlet-name> <servlet-class>web.TimeServlet</servlet-class> </servlet> <!-- 2 通过别名引用Servlet,并给它取一个网名(访问路径) --> <servlet-mapping> <servlet-name>time</servlet-name> <!-- 上面的起的别名 --> <url-pattern>/systemTime</url-pattern> <!-- 网名需要以斜线开头,网名自定义 --> </servlet-mapping> </web-app>