1.使用JavaEE版的eclipse开发动态的WEB工程(JavaWEB 项目)
1).把开发选项切换到JavaEE
2).可以在window -> Show View 中找到Package Explorer,并将其拖拽到开发区的左边
3).在servers面板中新建Tomcat服务器,在Tomcat安装的根目录
4).新建一个Dynamic Web Project,其中Target Runtime需选择Tomcat7.0
5).开发Java WEB 应用
6).可以通过run on server 来运行 WEB项目

2.servlet的hellword
1).创建一个servlet接口实现类
public class HelloServlet implements Servlet
2).在web.xml文件中配置和映射这个servlet
<!-- 配置和映射到Servlet -->
<servlet>
<!-- servlet注册的名字 -->
<servlet-name>helloServlet</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>

</servlet>

<servlet-mapping>
<!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>helloServlet</servlet-name>
<!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>

3.Servlet容器:运行servlet,jsp,filter等的软件环境。
1).可以来创建Servlet,并调用Servlet的相关生命周期方法。
2).jsp,filter,listener,Tag...

4.servlet 生命周期的方法:以下方法都是由servlet容器负责调用
1).构造器:只被调用一次,第一次请求servlet时 创建servlet的实例 调用构造器。说明servlet的单实例的!
2).init方法:只调用一次,在创建好实例后立即被调用,用于初始化当前servlet
3).service:每次请求都会调用service方法,实际用于响应请求。
4).destory:只被调用一次,在当前servlet所在的web应用被卸载时调用,用于释放servlet所占用的资源。

5.load-on-startup参数:
1).可以配置在servlet节点中:
<servlet>
<!-- servlet注册的名字 -->
<servlet-name>SecondServlet</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.atguigu.javaweb.SecondServlet</servlet-class>
<!-- 可以指定servlet被创建的时机 -->
<load-on-startup>2</load-on-startup>
</servlet>
2).load-on-startup:可以指定servlet 被创建的时机 若为负数则在第一次请求时被创建 若为0或整数 则在当前WEB应用被servlet容器加载时创建实例,且数组越小越早被创建。

6.关于servlet-mapping
1).一个servlet可以被映射到多个url上即可以有多个servlet-mapping对其进行映射
2).在Servlet映射到的URL也可以使用*通配符,但只能有两种固定的格式。一种是"*.扩展名",另一种是以(/)开头以"/*"结尾。不能以"/*"开头

</servlet>
<servlet-mapping>
<!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>SecondServlet</servlet-name>
<!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
<url-pattern>/*</url-pattern>
</servlet-mapping>

OR
</servlet>
<servlet-mapping>
<!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>SecondServlet</servlet-name>
<!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
<url-pattern>*do</url-pattern>
</servlet-mapping>
注意:以下的既带"/"又带扩展名的不合法
</servlet>
<servlet-mapping>
<!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>SecondServlet</servlet-name>
<!-- 映射具体的访问路径:/代表当前WEB应用的根目录。 -->
<url-pattern>/*.action</url-pattern>
</servlet-mapping>

7.ServletConfig:封装了servlet的配置信息,并且可以获取servletcontext对象
1). 配置servlet的初始化参数
<!-- 配置servlet的初始化参数。且该节点必须在load-on-startup前面 -->
<init-param>
<!-- 初始化参数名 -->
<param-name>user</param-name>
<!-- 初始化参数值 -->
<param-value>root</param-value>
</init-param>

<init-param>
<param-name>password</param-name>
<param-value>1230</param-value>
</init-param>
2).获取初始化参数:
getInitParameter(String name):获取指定参数名的初始化参数
getInitParameterNAmes():获取参数名组成的Enumeration 对象,

String user = servletConfig.getInitParameter("user");
System.out.println("user: "+user);

Enumeration<String> names = servletConfig.getInitParameterNames();
while(names.hasMoreElements()) {
String name = names.nextElement();
String value = servletConfig.getInitParameter(name);
System.out.println("^^"+name+":"+value);

3).获取servlet的配置名称(了解)
String serlvetName = servletConfig.getServletName();
System.out.println(serlvetName);

8.ServletContext

1).可以由ServletConfig获取

ServletContext servletContext =servletConfig.getServletContext()

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

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

设置初始化参数:可以为所有的servlet所获取,而servlet的初始化参数只有那个servlet才可以获取

<!-- 配置当前web应用的初始化参数 -->
<context-param>
<param-name>
driver
</param-name>
<param-value>
com.mysql.jdbc.Driver
</param-value>
</context-param>

方法:
getServletName
getInitParameterNames
//获取ServletContext对象

代码:

ServletContext servletContext =servletConfig.getServletContext();

String driver = servletContext.getInitParameter("driver");
System.out.println("driver:"+driver);

Enumeration<String> names2 = servletContext.getInitParameterNames();
while(names2.hasMoreElements()) {
String name = names2.nextElement();
System.out.println("-->" + name);
}
2.获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署前的路径
方法:
getRealPath(String path);

代码:
String realPath=servletContext.getRealPath("/note.txt");
System.out.println(realPath);

3.获取当前web应用的名称:
方法:
getContextPath()

代码:
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);

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

getResourceAsStream(String path): path的/为相对于当前web应用的根目录。
代码:
try {
ClassLoader classLoader = getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("jdbc.properties");
System.out.println("1." + is);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
try {
ClassLoader classLoader = getClass().getClassLoader();
InputStream is2 = classLoader.getResourceAsStream("jdbc.properties");
System.out.println("2." + is2);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

javaweb03 javaservlet基础一的更多相关文章

  1. JSP(基础语法)

    一.JSP简介 JSP全称为Java Server Pages,其根本是一个简化的Servlet设计,它实现了在java当中使用HTML标签.JSP是一种动态网页技术标准也就是javaEE的标准.JS ...

  2. [sloved] IDE JavaServlet "Error: Could not find or load main class Servlet"

    [ sloved ] JavaServlet "Error: Could not find or load main class Servlet" 报错内容: 提供一份 Servl ...

  3. JAVA一些基础概念

    Java (计算机编程语言) Java是一门面向对象编程语言,不仅吸收了C++语言的各种长处,还摒弃了C++里难以理解的多继承.指针等概念.因此Java语言具有功能强大和简单易用两个特征. Java语 ...

  4. 编程语言十万个为什么之java web的基础概念

    1.什么是JAVA Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, Ja ...

  5. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  6. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  9. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

随机推荐

  1. POJ3295 Tautology重言式

    Tautology 思路很简单,对于p.q.r.s.t暴力枚举是0还是1,判断即可.判断时像写表达式求值那样用栈.为了方便可以从后往前,因为最后一个肯定不是运算.那几个奇奇怪怪的函数可以找规律然后转为 ...

  2. Java多线程之Java内存模型

    如果要了解Java内存模型,就得对多线程的三大特性有初步的了解. 1.原子性:独一无二.一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行.比如i = i+1:其中就包 ...

  3. 162-PHP 文本替换函数str_replace(三)

    <?php $str='Hello world!'; //定义源字符串 $search=array('o','l','w'); //定义将被替换的字符数组 $replace='O'; //定义替 ...

  4. vsftpd实现不同端口访问。

    实现:分别监听21.2121端口. 一.安装服务 [root@7 ~]# yum -y install vsftpd 二.配置服务 配置文件一(21端口): [root@7 ~]# cd /etc/v ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-refresh

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  6. Maccms后门分析复现(并非官网的Maccms){10.15 第二十二天}

    该复现参考网络中的文章,该漏洞复现仅仅是为了学习交流,严禁非法使用!!!! Maccms官网:http://www.maccms.cn/ Maccms网站基于PHP+MYSQL的系统,易用性.功能良好 ...

  7. 2016蓝桥杯决赛C/C++A组第四题 路径之谜

    题意: 小明冒充X星球的骑士,进入了一个奇怪的城堡.城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士要从西北角走到东南角.可以横 ...

  8. 不得了的try catch

    try catch:几乎所有语言都有这个语句 try { //可能会导致错误的代码 } catch (error) { //在错误发生时怎么处理 }finally { //即使报错始终执行 } 1. ...

  9. bzoj 4260REBXOR

    什么什么trie树??呵呵呵,,,, 一直在困惑怎么处理哪连续一段最大..看了题解迷惑了好久.. 然后突然发现,是xor啊,,在trie树里找到以前得插入的前缀和,然后找到与现在前缀和每一位都不同的, ...

  10. 吴裕雄--天生自然C++语言学习笔记:C++ 数据类型

    使用编程语言进行编程时,需要用到各种变量来存储各种信息.变量保留的是它所存储的值的内存位置.这意味着,当创建一个变量时,就会在内存中保留一些空间. 可能需要存储各种数据类型(比如字符型.宽字符型.整型 ...