一、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学习总结的更多相关文章

  1. JSP&Servlet学习手册

    JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...

  2. Servlet 学习笔记

    Servlet 运行在服务器上的 java 类: Servlet 容器为 javaWeb 应用提供运行时环境,负责管理 servlet 和 jsp 生命周期,以及管理他们的共享数据. 现在我们知道了 ...

  3. Servlet学习:(三)Servlet3.0 上传文件

    转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362   一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...

  4. Servlet学习(九)——request

    request运行流程在Servlet学习(四)——response已介绍,不再赘述 1.通过抓包工具获取Http请求 因为request代表请求,所以我们可以通过该对象分别获得Http请求的请求行, ...

  5. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

  6. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  7. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  8. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  9. servlet 学习(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  10. JavaWeb学习总结-04 Servlet 学习和使用

    一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...

随机推荐

  1. Sublime Text3下使用Python,REPL的安装与快捷键设置方法

    前提条件:连接外网   1.安装管理插件(CTRL+SHIFT+P),找到Package Control:install package一项,回车后继续选择SublimeREPL插件,进行安装:   ...

  2. JavaScript(第十一天)【变量,作用域,内存】

    JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据 ...

  3. C语言博客作业--函数嵌套调用

    一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现 ...

  4. C语言第三次作业总结

    本次作业的亮点 总体情况 大部分同学基本掌握了单层循环结构的写法,懂得了代码调试的过程 PTA通过率及作业质量都不错,希望再接再厉 推荐博客 黄毓颖 推荐理由:代码思路清晰,格式良好:调试过程相当形象 ...

  5. 网络1711班 C语言第四次作业批改总结

    网络1711班 C语言第四次作业批改总结 助教有话说(写在前面) 近来,有同学跟老师和助教们反映:博客作业太多太麻烦,而且对编程能力提高似乎没什么帮助?在这里我要谈一谈我的感想. 博客作业的意义? 首 ...

  6. C语言第九次作业

    一.PTA实验作业 题目1:统计大于等于平均分人数 1. 本题PTA提交列表 2.设计思路 float i为循环变量,sum=0,count=0来表示所求人数 float *p=s来储存首地址 for ...

  7. 【Alpha版本】冲刺阶段 - Day1 - 启航

    Alpha 阶段成员分工及任务量 成员 分工 任务量(小时) 袁逸灏 完成app用户车辆,子弹发射,背景移动,暂停界面,音乐界面,音乐查找,音乐播放 25 刘伟康 项目进度把控.分配任务.组织会议.整 ...

  8. 吝啬的国度 nyoj

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...

  9. machine learning 之 导论 一元线性回归

    整理自Andrew Ng 的 machine learnig 课程 week1. 目录: 什么是机器学习 监督学习 非监督学习 一元线性回归 模型表示 损失函数 梯度下降算法 1.什么是机器学习 Ar ...

  10. ajax的原理解析

    一.关于同步与异步的分析: 异步传输是面向字符的传输,它的单位是字符:而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的.而ajax就是采用的异步请求方式的. ...