一:第一个jsp程序

1.项目设计结构

  

2.新建Person.java

 package com.java.demo;
public class Person {
public void printStr() {
System.out.println("show info-----");
}
}

3.书写index.jsp

<%@page import="com.java.demo.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>======</h1>
<%
Person p=new Person();
p.printStr();
%>
</body>
</html>

  

4.运行效果

  

二:第一个servlet程序以及知识点

1.结构

  

2.新建程序

package pottt;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 需要实现Servlet接口
* @author caojun
*
*/
public class rertrtrt implements Servlet{ @Override
public void destroy() {
System.out.println("destroy"); } @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init"); } @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service"); }
}

  

3.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>pottt.rertrtrt</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/he</url-pattern>
</servlet-mapping>
</web-app>

  

4.访问

  

5.映射

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

    <!-- 配置和映射 Servlet -->
    <servlet>
      <!-- Servlet 注册的名字 -->
      <servlet-name>helloServlet</servlet-name>
      <!-- Servlet 的全类名 -->
      <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
    </servlet>

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

6.生命周期的四个函数

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

7.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: 可以指定 Serlvet 被创建的时机.

     若为负数, 则在第一次请求时被创建.

    若为 0 或正数, 则在当前 WEB 应用被Serlvet 容器加载时创建实例, 且数组越小越早被创建.

8.serlvet-mapping参数

  1). 同一个Servlet可以被映射到多个URL上,即多个 <servlet-mapping> 元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。

  2). 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。

  <servlet-mapping>
    <servlet-name>secondServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

  OR

  <servlet-mapping>
    <servlet-name>secondServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

三:ServletConfig变量

1.在web.xml中配置初始化参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>pottt.rertrtrt</servlet-class>
<init-param>
<param-name>user</param-name>
<param-value>caojun</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123321</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/he</url-pattern>
</servlet-mapping>
</web-app>

  

2.使用函数获取

package pottt;

import java.io.IOException;
import java.util.Enumeration; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 需要实现Servlet接口
* @author caojun
*
*/
public class rertrtrt implements Servlet{ public rertrtrt() {
System.out.println("构造函数");
}
@Override
public void destroy() {
System.out.println("destroy"); } @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} @Override
public void init(ServletConfig servletConfig) throws ServletException {
//getInitParameter
String user=servletConfig.getInitParameter("user");
System.out.println("user="+user);
//getInitParameterNames
Enumeration<String> enu=servletConfig.getInitParameterNames();
while(enu.hasMoreElements()) {
String name=enu.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("name="+name+",value="+value);
} } @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service"); }
}

  

3.运行效果

  

四:ServletContext

0.框架

  

1.获取

  可以由 SerlvetConfig 获取:

  ServletContext servletContext = servletConfig.getServletContext();

2.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<!-- 配置当前 WEB 应用的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>url</param-name>
<param-value>sun.java.org</param-value>
</context-param> <servlet>
<servlet-name>hello</servlet-name>
<servlet-class>pottt.rertrtrt</servlet-class>
<init-param>
<param-name>user</param-name>
<param-value>caojun</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123321</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/he</url-pattern>
</servlet-mapping>
</web-app>

  

3.获取当前的web应用的参数

  使用的函数与上面的获取servlet的初始化参数的方法相同

  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);
  }

4.获取当前 WEB 应用的某一个文件在服务器上的绝对路径

package pottt;

import java.io.IOException;
import java.util.Enumeration; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 需要实现Servlet接口
* @author caojun
*
*/
public class rertrtrt implements Servlet{ public rertrtrt() {
System.out.println("构造函数");
}
@Override
public void destroy() {
System.out.println("destroy"); } @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} @Override
public void init(ServletConfig servletConfig) throws ServletException {
//getInitParameter
String user=servletConfig.getInitParameter("user");
System.out.println("user="+user);
//getInitParameterNames
Enumeration<String> enu=servletConfig.getInitParameterNames();
while(enu.hasMoreElements()) {
String name=enu.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("name="+name+",value="+value);
}
//getRealPath
ServletContext servletContext=servletConfig.getServletContext();
String path=servletContext.getRealPath("/note.txt");
System.out.println(path);
} @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service"); }
}

  

5.运行效果

  

6.获取当前 WEB 应用的名称

 package pottt;

 import java.io.IOException;
import java.util.Enumeration; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 需要实现Servlet接口
* @author caojun
*
*/
public class rertrtrt implements Servlet{ public rertrtrt() {
System.out.println("构造函数");
}
@Override
public void destroy() {
System.out.println("destroy"); } @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} @Override
public void init(ServletConfig servletConfig) throws ServletException {
//getInitParameter
String user=servletConfig.getInitParameter("user");
System.out.println("user="+user);
//getInitParameterNames
Enumeration<String> enu=servletConfig.getInitParameterNames();
while(enu.hasMoreElements()) {
String name=enu.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("name="+name+",value="+value);
}
//getRealPath
ServletContext servletContext=servletConfig.getServletContext();
String path=servletContext.getRealPath("/note.txt");
System.out.println(path);
//getContextPath
String contextPath=servletContext.getContextPath();
System.out.println(contextPath); } @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service"); }
}

7.运行效果

  

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

  对应两种方式

 package pottt;

 import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 需要实现Servlet接口
* @author caojun
*
*/
public class rertrtrt implements Servlet{ public rertrtrt() {
System.out.println("构造函数");
}
@Override
public void destroy() {
System.out.println("destroy"); } @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} @Override
public void init(ServletConfig servletConfig) throws ServletException {
//getInitParameter
String user=servletConfig.getInitParameter("user");
System.out.println("user="+user);
//getInitParameterNames
Enumeration<String> enu=servletConfig.getInitParameterNames();
while(enu.hasMoreElements()) {
String name=enu.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("name="+name+",value="+value);
}
//getRealPath
ServletContext servletContext=servletConfig.getServletContext();
String path=servletContext.getRealPath("/note.txt");
System.out.println(path);
//getContextPath
String contextPath=servletContext.getContextPath();
System.out.println(contextPath);
//
try {
ClassLoader classLoader=getClass().getClassLoader();
InputStream in=classLoader.getResourceAsStream("jdbc.properties");
System.out.println(in);
} catch (Exception e) {
e.printStackTrace();
}
//
try {
InputStream in2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
System.out.println(in2);
} catch (Exception e) {
e.printStackTrace();
} } @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service"); }
}

9.效果

  

五:ServletRequest

1.主要获取参数的方法

  > String getParameter(String name): 根据请求参数的名字, 返回参数值.
    若请求参数有多个值(例如 checkbox), 该方法只能获取到第一个提交的值.

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

  > Enumeration getParameterNames(): 返回参数名对应的 Enumeration 对象,
    类似于 ServletConfig(或 ServletContext) 的 getInitParameterNames() 方法.

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

2.程序

第一个web程序(web.xml , ServletConfig , ServletContext)的更多相关文章

  1. 使用MyEclipse开发第一个Web程序

    MyEclipse环境配置 首先,安装一个MyEclipse,然后进行一些相关的环境配置(Window->Preferences): 比如字体.Formatter等. 也可以从Eclipse中导 ...

  2. 转 一个web项目web.xml的配置中<context-param>配置作用

    一个web项目web.xml的配置中<context-param>配置作用   <context-param>的作用:web.xml的配置中<context-param& ...

  3. 新建一个Java Web程序

    依次选择 File——New——Web——Dynamic Web Project 输入项目名称“MyWebProject”,选择好Apache Tomcat V9.0服务器,其他采用默认配置. 单击N ...

  4. 创建一个简单的maven的web程序

    最近学习Hadoop,发现学习要想用hadoop作为后台运行web程序,必须应用maven,所以学习了今天学习了一下maven,然后搭建了一个简单的web程序 首先我使用的是eclipse中自带的ma ...

  5. Servlet+JSP教程之:第一个Web程序

    我们知道当浏览器发送请求给服务器后,服务器会调用并执行对应的逻辑代码进行请求处理.逻辑代 码是由程序员自己编写然后放进服务器进行运行,其实就是Servlet程序. 第一个Web程序: 开发工具: My ...

  6. Servlet+JSP(三):第一个Web程序

    Servlet+JSP(三):第一个Web程序在学习了服务器并成功安装后,我们知道当浏览器发送请求给服务器后,服务器会调用并执行对应的逻辑代码进行请求处理.逻辑代 码是由程序员自己编写然后放进服务器进 ...

  7. Web程序员开发App系列 - 开发我的第一个App,源码下载

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  8. Django的第一个web程序及深入学习

    本学习历程参照Practical Django Projects和http://djangobook.py3k.cn上翻译的内容进行 注:本例以本机加以说明: 根据Django的安装过程可知:在命令行 ...

  9. [Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序

    本系列前两部分已经介绍了如何配置Ruby on Rails开发环境,现在终于进入正题啦! Part1.开发前的准备 本次的主要任务是开发第一个Rails程序.需要特别指出的是,本次我选用了一个(Paa ...

随机推荐

  1. Nginx错误日志与优化专题

    一.Nginx配置和内核优化 实现突破十万并发 二.一次Nignx的502页面的错误记录 (1)错误页面显示 错误日志: // :: [error] #: * recv() failed (: Con ...

  2. 【BZOJ】3453: tyvj 1858 XLkxc 拉格朗日插值(自然数幂和)

    [题意]给定k<=123,a,n,d<=10^9,求: $$f(n)=\sum_{i=0}^{n}\sum_{j=1}^{a+id}\sum_{x=1}^{j}x^k$$ [算法]拉格朗日 ...

  3. 【leetcode 简单】 第六十七题 回文链表

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复 ...

  4. cassandra数据库

    一.下载地址:http://www.apache.org/dyn/closer.lua/cassandra/3.0.11/apache-cassandra-3.0.11-bin.tar.gz 二.安装 ...

  5. 33、Map简介

    Map接口概述 除了Collection之外,常用的集合还有Map接口,里面常用的实现类图如下: map中的元素是以键-值的方式存在的,通过键可以获取到值,键是不可以重复的,跟地图比较像,通过一个坐标 ...

  6. 文件操作fstream

    c++文件操作详解 2009-04-16 20:46:35|  分类: C/C++|举报|字号 订阅 C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ost ...

  7. bzoj 1014: 洛谷 P4036: [JSOI2008]火星人

    题目传送门:洛谷P4036. 题意简述: 有一个字符串,支持插入字符,修改字符. 每次需要查询两个后缀的LCP长度. 最终字符串长度\(\le 100,\!000\),修改和询问的总个数\(\le 1 ...

  8. nginx自定义500,502,504错误页面无法跳转【转】

    1.自定一个页面,这个页面是一个链接地址可以直接访问的. 以下是nginx的配置: location / {            proxy_pass http://tomcat_app108;   ...

  9. 畸形的 dockerfile中的COPY命令-

    dockerfile中的COPY是指COPY 指定目录的“子级目录”下所有的目录和文件,到指定目录中,这个shell中的cp命令大相径庭,使得很多人纳闷,怎么cpy过去的文件不是自己想要的

  10. j-linkV8固件更新(任意版本)

    在使用j-link v8调试程序时,容易出现固件丢失或出错的情况,导致电脑不能识别,j-link上面的灯不亮.我今天刚刚遇到了这个情况,于是就拆开外壳,在网上搜索资料,发现刷固件相关的还真多,但是有一 ...