servlet学习总结
一、web工程结构
1、HTTP协议(hyper text transfer protocol)(超文本传输协议)
机制:请求/响应 机制(request/response)(HttpServletRequest/HttpServletResponse)
2、手动创建web工程步骤:
1)在C盘目录下新建一个文件夹,取名MyWebProject,在该文件夹下创建两个文
件夹如下:
文件夹WEB-INF,该文件夹里面有:lib文件夹,classes文件夹和web.xml
文件夹pages,该文件夹下主要放html,jsp,css,js,img等文件
2)打开运行,输入CMD,弹出命令窗口,输入cd进入C盘根目录,再输入
MyWebProject进入Web工程根目录,再输入jar -cvf MyWebProject.war .
回车后,项目已经打包成war了,在该工程根目录文件夹下面有一个
MyWebProject.war;
3)再把这个包放到tomcat的webapp目录下,启动tomcat,
浏览器里面测试成功。
二、Servlet简介
调用Servlet的几种方式:
--URL:http://huazai-pc:8080/ServletTest/Hello
--提交表单
--超链接
--javascript脚本
三、Servlet基础
-提交表单的方法
Get:url地址栏显示提交信息,url地址栏长度有限制,当数据量大的时候容易造成
数据丢失导致数据不完整
Post:比较安全,url地址栏不会显示提交信息,提交信息量不受限制,一般情况使
用doPost。
一般情况默认调用doGet,当Servlet里面有service方法且该方法里面没写代码时,默认调用service方法,没有调用doGet或doPost方法
-Servlet生命周期(四个步骤)
1、加载实例化Servlet:创建一个Servlet实例
2、调用init方法(仅被调用一次)(多用户共享一个实例)
3、调用service方法(doGet或者doPost)(被调用多次,每次请求调用)
4、调用destory方法:调用一次(销毁Servlet)
-使用Servlet输出HTML页面
-获得Servlet初始化参数
Web.xml配置全局参数:
<context-param>
<param-name>contextname</param-name>
<param-value>contextvalue</param-value>
</context-param>
Servlet获得全局参数:
this.getServletContext().getInitParameter("contextname");
Web.xml配置局部参数:
<servlet>
<init-param>
<param-name>name</param-name>
<param-value>namevalue</param-value>
</init-param>
</servlet>
Servlet获得局部参数:
this.getInitParameter("name");
-页面导航
1、请求重定向:(不共享request里面的数据)
-response.sendRedirect(“url”);
2、请求转发(共享request里面的数据)
-request.getRequestDispatcher(“url”).forward(request,response);
3、请求包含
request.getRequestDispatcher(“url”).include(request,response);
四、ServletForm表单处理
1、Form表单简介
-表单是web程序和用户交互的主要途径之一,例如:搜索引擎,注册登录等
-常用表单元素
-input: text password radio checkbox file button reset submit
-select Option
-textarea
--使用Servlet处理表单
1、读取单个请求参数:
String username=request.getParameter("username");
2、读取多个表单
String[] hobby=request.getParameterValues("hobbies");
3、读取所有参数名称
Enumeration names=request.getParameterNames();
五、Servlet请求头信息
1、Servlet请求头信息
读取HTTP请求头信息
1)使用HttpServletRequest中的方法:
-一般方法:
-getHeader (header名称不区分大小写)
-getHeaders
-getHeaderNames
-专门方法:
-getCookies
-getAuthType
-getRemoteUser
-getContentLength
-getContentType
-getDateHeader
-getIntHeader
-相关信息
-getMethod
-getRequestURI
-getQueryString
-getProtocool
2)判断浏览器类型
if(broswer!=null && broswer.indexOf("MSIE")!=-1){
System.out.println("使用IE浏览器");
}else if(broswer!=null && broswer.indexOf("Mozilla")!=-1){
System.out.println("使用Mozilla浏览器");
}else if(broswer!=null && broswer.indexOf("Chrome")!=-1){
System.out.println("使用谷歌浏览器");
}else{
System.out.println("使用其他浏览器");
}
2、Servlet响应头信息
1、构建Excel表格
response.setContentType("application/vnd.ms-excel");
PrintWriter out= response.getWriter();
out.println("\tQ1\tQ2\tQ3\tQ4\tTotal");
out.println("Apples\t78\t87\t92\t29\t=SUM(B2:E2)");
out.println("Oranges\t77\t86\t93\t30\t=SUM(B3:E3)");
2、读取图片并显示
response.setContentType("image/jpeg");
InputStream in=this.getClass().getClassLoader().getResourceAsStream("bld.jpg");//文件加载器
byte[] b=new byte[in.available()];
in.read(b);
OutputStream out=response.getOutputStream();
out.write(b);
out.close();
in.close();
3、定时刷新
response.setHeader("refresh", "1");
out.println((new Date()).toLocaleString() );
六、Cookie
1、Cookie简介
-Cookie是保存在客户端的一个“键值对”,用来标示用户的一些信息
2、Cookie的应用
-在电子商务中标示用户
-对站点进行定制
-定向广告
3、创建Cookie
-调用Cookie的构造函数,给出cookie的名称和cookie的值,二者都是字符串;
Cookie c=new Cookie(“UserId”,”a1234”);
-设置最大时效
如果要告诉浏览器将Cookie存储到磁盘上,而非仅仅保存在内存中,使用
SetmaxAge(参数为秒数)
c.SetmaxAge(60*60*24*7);//one week
-将Cookie放入到HTTP响应
response.addCookie(c);
4、创建Cookie代码:
import javax.servlet.http.Cookie;
Cookie c=new Cookie("username", "xiaoyang");
c.setMaxAge(60*60*24*7);
response.addCookie(c);
5、访问Cookie代码:
Cookie[] cookie=request.getCookies();
if(cookie!=null && cookie.length>0){
for(int i=0;i<cookie.length;i++){
Cookie c=cookie[i];
out.println(c.getName()+":"+c.getValue());
}
}
七、Session
1、Session API
//获得Session实例,该接口由服务器容器实现
HttpSession session=request.getSession();
//session共享数据
session.setAttribute("un", username);
//获取session里面的值
String un=(String) session.getAttribute("un");
八、共享变量
1、变量的作用域
-HttpServletRequest(请求级别,当前请求)
-HttpSession(会话级别,当前浏览器和服务器)
-ServletContext(应用程序级别,全局变量,整个web工程)
变量${var}在值栈中查找顺序是:HttpServletRequest->HttpSession->ServletContext
${requestScope.var}、${sessionScope.var}、${applicationScope.var}
九、过滤器Filter
1.Filter在web.xml中配置后,当我们访问目标资源时,系统会根据所配置范围自动执行,配置代码如下:
<!-- 声明过滤器 -->
<filter>
<filter-name>myfilter</filter-name>
<filter-class>com.amaker.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern><!-- 拦截整个工程下的所有文件 -->
</filter-mapping>
十、监听器Listener
在web.xm里面配置方式如下:
<listener>
<listener-class>com.amaker.listener.ListenerTest</listener-class>
</listener>
servlet学习总结的更多相关文章
- JSP&Servlet学习手册
JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...
- Servlet 学习笔记
Servlet 运行在服务器上的 java 类: Servlet 容器为 javaWeb 应用提供运行时环境,负责管理 servlet 和 jsp 生命周期,以及管理他们的共享数据. 现在我们知道了 ...
- Servlet学习:(三)Servlet3.0 上传文件
转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362 一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...
- Servlet学习(九)——request
request运行流程在Servlet学习(四)——response已介绍,不再赘述 1.通过抓包工具获取Http请求 因为request代表请求,所以我们可以通过该对象分别获得Http请求的请求行, ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
- Servlet学习笔记(三)
目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- servlet 学习(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- JavaWeb学习总结-04 Servlet 学习和使用
一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...
随机推荐
- drbd(一):简介和安装
本文目录:1.drbd简介2.drbd工作原理和术语说明 2.1 drbd工作原理 2.2 drbd复制协议模型 2.3 drbd设备的概念 2.4 drbd资源角色 2.5 drbd工作模式 2.6 ...
- DevOps实践之Gitlab安装部署
All GitLab packages are posted to our package server and can be downloaded. We maintain five repos: ...
- 四则运算程序(java基于控制台)
四则运算题目生成程序(基于控制台) 一.题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r ...
- 系统右键添加cmd命令
我们运行cmd.exe时,会发现刚刚打开时,一般提示在默认路径下: 有时候我们希望直接能够切换到某个路径下运行程序或者做某些工作,那么切换路径可能就会比较麻烦.下面我们介绍一种比较实用的方法,用鼠标右 ...
- 【Alpha版本】冲刺阶段 - Day4 - 加速
今日进展 袁逸灏:实现音乐的播放.(5h) 启动类,游戏画面类(修改类) 刘伟康:继续借鉴其他 alpha 冲刺博客,了解了Android方面的部分内容,便于更好地推进进度.(2h) 刘先润:更新图画 ...
- 团队作业9——事后分析(Beta版本)
事后诸葛亮分析 1. 总结 团队合照 a. 项目管理之事后诸葛亮会 ·设想和目标 (1)我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 个人学习 ...
- 冲刺NO.1
Alpha冲刺第一天 站立式会议 项目进展 项目的第一天,主要工作是对项目的开发进行规划,以及将规划的成果转化为燃尽图与博客文章.依据项目需求分析报告与开题报告中已经完成的设计任务和项目规划,我们将系 ...
- 团队作业4——第一次项目冲刺(Alpha版本)
第一天http://www.cnblogs.com/ThinkAlone/p/7861070.html 第二天http://www.cnblogs.com/ThinkAlone/p/7861191.h ...
- [JCIP笔记] (二)当我们谈线程安全时,我们在谈论什么
总听组里几个大神说起线程安全问题.本来对"线程安全"这个定义拿捏得就不是很准,更令人困惑的是,大神们用这个词指代的对象不仅抽象而且千变万化.比如,我们的架构师昨天说: " ...
- js 开发注意事项
涉及api post 请求的, 涉及sqlite 存储的, conent 用encodeURIComponent, decodeURIComponent ,处理 JSON.parse 最好加上try ...