1. 使用 JavaEE 版的 Eclipse 开发动态的 WEB 工程(JavaWEB 项目)

1). 把开发选项切换到 JavaEE

2). 可以在 Window -> Show View 中找到 Package Explorer, 并把其拖拽到开发区的左边

3). 在 Servers 面板中新建 Tomcat 服务器. 一定要关联到 Tomcat 安装的根目录

4). 新建一个 Dynamic Web Project. 其中 Target Runtime 需选择 Tomcat6.0

5). 开发 Java WEB 应用

6). 可以通过 run on server  来运行 WEB 项目.

2. Servlet 的 HelloWorld

1). 创建一个 Servlet 接口的实现类.

public class HelloServlet implements Servlet

2). 在 web.xml 文件中配置和映射这个 Servlet

helloServlet

com.atguigu.javaweb.HelloServlet

helloServlet

/hello

3. Servlet 容器: 运行 Servlet、JSP、Filter 等的软件环境.

1). 可以来创建 Servlet, 并调用 Servlet 的相关生命周期方法.

2). JSP, Filter, Listener, Tag ...

4. Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.

1). 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器.

这说明 Serlvet 的单实例的!

2). init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet.

3). service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的.

4). destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.

5. load-on-startup 参数:

1).  配置在 servlet 节点中:

secondServlet

com.atguigu.javaweb.SecondServlet

2

2). load-on-startup: 可以指定 Serlvet 被创建的时机. 若为负数, 则在第一次请求时被创建.若为 0 或正数, 则在当前 WEB 应用被

Serlvet 容器加载时创建实例, 且数组越小越早被创建.

6. 关于 serlvet-mapping:

1). 同一个Servlet可以被映射到多个URL上,即多个 元素的子元素的设置值可以是同一个

Servlet的注册名。

2). 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:

一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。

secondServlet

/*

OR

secondServlet

*.do

注意: 以下的既带 / 又带扩展名的不合法.

secondServlet

/*.action

7. ServletConfig: 封装了 Serlvet 的配置信息, 并且可以获取 ServletContext 对象

1). 配置 Serlvet 的初始化参数

helloServlet

com.atguigu.javaweb.HelloServlet

user

root

password

1230

-1

2). 获取初始化参数:

> getInitParameter(String name): 获取指定参数名的初始化参数

> getInitParameterNames(): 获取参数名组成的 Enumeration 对象.

String user = servletConfig.getInitParameter("user");

System.out.println("user: " + user);

Enumeration names = servletConfig.getInitParameterNames();

while(names.hasMoreElements()){

String name = names.nextElement();

String value = servletConfig.getInitParameter(name);

System.out.println("^^" + name + ": " + value);

}

3). 获取 Serlvet 的配置名称(了解)

8. ServletContext

1). 可以由  SerlvetConfig 获取:

ServletContext servletContext = servletConfig.getServletContext();

2). 该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.

①. 获取当前 WEB 应用的初始化参数

设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

driver

com.mysql.jdbc.Driver

方法:

getInitParameter

getInitParameterNames

代码:

ServletContext servletContext = servletConfig.getServletContext();

String driver = servletContext.getInitParameter("driver");

System.out.println("driver:" + driver);

Enumeration names2 = servletContext.getInitParameterNames();

while(names2.hasMoreElements()){

String name = names2.nextElement();

System.out.println("-->" + name);

}

②. 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

getRealPath(String path);

代码:

String realPath = servletContext.getRealPath("/note.txt");

System.out.println(realPath);

③. 获取当前 WEB 应用的名称:

getContextPath()

代码:

String contextPath = servletContext.getContextPath();

System.out.println(contextPath);

④. 获取当前 WEB 应用的某一个文件对应的输入流.

getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.

代码:

InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");

⑤. 和 attribute 相关的几个方法:

9. GET 请求和 POST 请求:

1). 使用GET方式传递参数:

①. 在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。

②. 如果网页中的

表单元素的 method 属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。

③. 使用GET请求方式给WEB服务器传递参数的格式:

http://www.atguigu.com/counter.jsp?name=lc&password=123

④. 使用GET方式传送的数据量一般限制在 1KB 以下。

2). 使用 POST 方式传递参数:

①. POST 请求方式主要用于向 WEB 服务器端程序提交 FORM 表单中的数据: form 表单的 method 置为 POST

②. POST 方式将各个表单字段元素及其数据作为 HTTP 消息的实体内容发送给 WEB 服务器,传送的数据量要比使用GET方式传送的数据量大得多。

POST /counter.jsp HTTP/1.1

referer: http://localhost:8080/Register.html

content-type: application/x-www-form-urlencoded

host: localhost:8080

content-length: 43

name=zhangsan&password=123              --请求体中传递参数.

10. 如何在 Serlvet 中获取请求信息:

1). Servlet 的 service() 方法用于应答请求: 因为每次请求都会调用 service() 方法

public void service(ServletRequest request, ServletResponse response)

throws ServletException, IOException

ServletRequest: 封装了请求信息. 可以从中获取到任何的请求信息.

ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现.

这两个接口的实现类都是服务器给予实现的, 并在服务器调用 service 方法时传入.

2). ServletRequest: 封装了请求信息. 可以从中获取到任何的请求信息.

①. 获取请求参数:

> String getParameter(String name): 根据请求参数的名字, 返回参数值.

若请求参数有多个值(例如 checkbox), 该方法只能获取到第一个提交的值.

> String[] getParameterValues(String name): 根据请求参数的名字, 返回请求参数对应的字符串数组.

> Enumeration getParameterNames(): 返回参数名对应的 Enumeration 对象,

类似于 ServletConfig(或 ServletContext) 的 getInitParameterNames() 方法.

> Map getParameterMap(): 返回请求参数的键值对: key: 参数名,  value: 参数值, String 数组类型.

②. 获取请求的 URI:

HttpServletRequest httpServletRequest = (HttpServletRequest) request;

String requestURI = httpServletRequest.getRequestURI();

System.out.println(requestURI); //  /day_29/loginServlet

③. 获取请求方式:

String method = httpServletRequest.getMethod();

System.out.println(method); //GET

④. 若是一个 GET 请求, 获取请求参数对应的那个字符串, 即 ? 后的那个字符串.

String queryString = httpServletRequest.getQueryString();

System.out.println(queryString); //user=atguigu&password=123456&interesting=game&interesting=party&interesting=shopping

⑤. 获取请求的 Serlvet 的映射路径

String servletPath = httpServletRequest.getServletPath();

System.out.println(servletPath);  //  /loginServlet

⑥. 和 attribute 相关的几个方法:

3). HttpServletRequest: 是 SerlvetRequest 的子接口. 针对于 HTTP 请求所定义. 里边包含了大量获取 HTTP 请求相关的方法.

4). ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现.

①. *getWriter(): 返回 PrintWriter 对象. 调用该对象的 print() 方法, 将把 print() 中的参数直接打印

到客户的浏览器上.

②. 设置响应的内容类型: response.setContentType("application/msword");

③. void sendRedirect(String location): 请求的重定向. (此方法为 HttpServletResponse 中定义.)

-----------------------------------------------------------------------------

在 web.xml 文件中设置两个 WEB 应用的初始化参数, user, password.

定义一个 login.html, 里边定义两个请求字段: user, password. 发送请求到 loginServlet

在创建一个 LoginServlet, 在其中获取请求的 user, password. 比对其和 web.xml 文件中定义的请求参数是否一致

若一致, 响应 Hello:xxx, 若不一致, 响应 Sorry: xxx  xxx 为 user.

-----------------------------------------------------------------------------

java web start 参数_学习笔记(二)Eclipse设置 Servlet配置及初始化参数读取 及Servlet应用...相关推荐

  1. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  2. java web孤傲苍狼,JavaWeb学习笔记

    我看的资料是孤傲苍狼的javaweb学习笔记,他写的真的很全,这或许就是社区力量吧!哪些问题不知道,上网搜一搜就有了,让自己不进步的敌人,只有懒惰了. 这是我接触JavaWeb的第二周,有一些自己的理 ...

  3. 【theano-windows】学习笔记二——theano中的函数和共享参数

    前言 上一篇博客中学到了theano中的变量类型,也就是dscalar.dvector之类的, 然后还有一个theano.function和eval函数, 将我们所定义的操作转换成theano可执行的 ...

  4. java多线程实战指南_学习笔记《Java多线程编程实战指南》二

    2.1线程属性 属性 属性类型及用途 只读属性 注意事项 编号(id) long型,标识不同线程 是 不适合用作唯一标识 名称(name) String型,区分不同线程 否 设置名称有助于代码调试和问 ...

  5. java web开发常见问题_JavaWeb学习笔记(五)--Web开发其他常见问题

    一.把web应用打成war包 使用JDK自带jar命令,进入到web应用里面,执行命令: jar -cvf 包名.war . # .表示当前目录所有的文件 直接用jar可查看帮助 执行完成后生成一个d ...

  6. java 模块设计模式_Java9模块化学习笔记二之模块设计模式

    模块设计的原则: 1.防止出现编译时循环依赖(主要是编译器不支持),但运行时是允许循环依赖的,比如GUI应用 2.明确模块的边界 几种模块设计: API模块,聚合模块(比如java.base) 可选依 ...

  7. java extern的作用_学习笔记之20-static和extern关键字2-对变量的作用

    上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有 ...

  8. java沙盒模式_JavaScript学习笔记(二十五) 沙箱模式

    沙箱模式(Sandbox Pattern) 沙箱模式可以避免命名空间的一些缺点(namespacing pattern),比如: 依赖一个唯一全局的变量作为程序的全局符号.在命名空间模式中,没有办法存 ...

  9. java冰法_Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /*这是 * 一段注释, * 它跨越了多个行*/ public void ...

  10. java jdbc 连接ignite_Apache Ignite 学习笔记(二): Ignite Java Thin Client

    前一篇文章,我们介绍了如何安装部署Ignite集群,并且尝试了用REST和SQL客户端连接集群进行了缓存和数据库的操作.现在我们就来写点代码,用Ignite的Java thin client来连接集群 ...

最新文章

  1. 分享45款高质量的免费(X)HTML/CSS模板
  2. FaceBook AI大牛贾扬清传离职,将加入中国公司
  3. How Kyma plugin register hook to Activate and deactivate event
  4. [Java基础]为什么会出现字符流?与编码表介绍
  5. WordPress 5.0 换回老版”Classic Editor”经典编辑器教程
  6. 关于ppt中嵌入echarts图表
  7. settimeout需要清除吗_前端20个真正灵魂拷问,前端初级到中级你还需要这个!
  8. Wireshark使用入门
  9. python实现api server,初学python,准备学习做个restful api server,现在有些困惑
  10. Java ByteCode
  11. mysql的简单用法_mysql简单用法,以及增删改查语句
  12. QLabel(一) 内容换行
  13. mysql 正则表达式 包含中文_MYSQL 中文检索匹配与正则表达式
  14. 射频遥控:固定码与学习码的区别
  15. Java Swing绘制箭头
  16. 用UDP实现简易的聊天室
  17. 面试算法03-高楼扔球求临界破碎楼层
  18. 深度学习论文: KeepAugment: A Simple Information-Preserving Data Augmentation Approach及其PyTorch实现
  19. 极验geetest的使用
  20. ST 电机控制工作台帮助文档翻译 之 使用 ST 电机控制工作台(工作台(文件菜单命令))

热门文章

  1. Linux下的Nginx安装(开机自启动)
  2. android应用调试之如何保存logcat日志到本地
  3. 【笔记】ubuntu 16.04 centos 7如何配置sudo权限
  4. [WPF] 嵌入资源到DLL,并解决PNG图片问题
  5. Luogu2216 [HAOI2007]理想的正方形
  6. Win10下安装并配置Python环境变量以及pip的安装、更新与使用
  7. Luogu4587[FJOI2016] 神秘数
  8. 前端性能优化(慕课网笔记)-3-代码优化
  9. groupmod 修改用户组信息
  10. matlab在二值图像上画曲线_数字图像处理:Image Printing Program Based on Halftoning