第一个web程序(web.xml , ServletConfig , ServletContext)
一:第一个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)的更多相关文章
- 使用MyEclipse开发第一个Web程序
MyEclipse环境配置 首先,安装一个MyEclipse,然后进行一些相关的环境配置(Window->Preferences): 比如字体.Formatter等. 也可以从Eclipse中导 ...
- 转 一个web项目web.xml的配置中<context-param>配置作用
一个web项目web.xml的配置中<context-param>配置作用 <context-param>的作用:web.xml的配置中<context-param& ...
- 新建一个Java Web程序
依次选择 File——New——Web——Dynamic Web Project 输入项目名称“MyWebProject”,选择好Apache Tomcat V9.0服务器,其他采用默认配置. 单击N ...
- 创建一个简单的maven的web程序
最近学习Hadoop,发现学习要想用hadoop作为后台运行web程序,必须应用maven,所以学习了今天学习了一下maven,然后搭建了一个简单的web程序 首先我使用的是eclipse中自带的ma ...
- Servlet+JSP教程之:第一个Web程序
我们知道当浏览器发送请求给服务器后,服务器会调用并执行对应的逻辑代码进行请求处理.逻辑代 码是由程序员自己编写然后放进服务器进行运行,其实就是Servlet程序. 第一个Web程序: 开发工具: My ...
- Servlet+JSP(三):第一个Web程序
Servlet+JSP(三):第一个Web程序在学习了服务器并成功安装后,我们知道当浏览器发送请求给服务器后,服务器会调用并执行对应的逻辑代码进行请求处理.逻辑代 码是由程序员自己编写然后放进服务器进 ...
- Web程序员开发App系列 - 开发我的第一个App,源码下载
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Django的第一个web程序及深入学习
本学习历程参照Practical Django Projects和http://djangobook.py3k.cn上翻译的内容进行 注:本例以本机加以说明: 根据Django的安装过程可知:在命令行 ...
- [Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序
本系列前两部分已经介绍了如何配置Ruby on Rails开发环境,现在终于进入正题啦! Part1.开发前的准备 本次的主要任务是开发第一个Rails程序.需要特别指出的是,本次我选用了一个(Paa ...
随机推荐
- 搞ACM的你伤不起[转载] 原作者:RoBa
劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟 ...
- Nginx location 配置用法及正则例子
Nginx location 配置语法 1. location [ = | ~ | ~* | ^~ ] uri { ... } 2. location @name { ... } ...
- Python核心编程——Chapter9
好久没写过Python了,前一阵子忙这忙那的,都几乎把Python给丢掉了,话不多说,马上开始. 9.1.文件过滤.显示一个文件的所有行,并且忽略以井号开头的行. 其实这个题目比较基础,用shell语 ...
- 【BZOJ】1828: [Usaco2010 Mar]balloc 农场分配(经典贪心)
[算法]贪心+线段树 [题意]给定n个数字ci,m个区间[a,b](1<=a,b<=10^5),每个位置最多被ci个区间覆盖,求最多选择多少区间. 附加退化问题:全部ci=1,即求最多的不 ...
- 20155214 2016-2017-2 《Java程序设计》第7周学习总结
20155214 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 UTC时间以Unix元年(1970年)为起点经过的秒数. ISO 8601并非年历系统,大部 ...
- Collections -- 集合的工具类
Collections是JDK针对集合提供的一个工具类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 1.搜索 如可以使用Collections提供的二分查找方法binarySe ...
- phpcm nginx 伪静态文件
rewrite ^/show-([0-9]+)-([0-9]+)-([0-9]+).html /index.php?m=content&c=index&a=show&catid ...
- python最大最小距离算法贴近度评价法
1.大最小贴近度评价法 概念: 贴近度表示两个模糊几何之间的彼此接近程度,在模糊模式识别方法中采用贴近度的大小识别待判别模糊子集的模式类别.为衡量待识别子集的类别,需要判别各个阶段与标杆模糊集合之间的 ...
- sklearn评估模型的方法
一.acc.recall.F1.混淆矩阵.分类综合报告 1.准确率 第一种方式:accuracy_score # 准确率import numpy as np from sklearn.metrics ...
- 文件操作fstream
c++文件操作详解 2009-04-16 20:46:35| 分类: C/C++|举报|字号 订阅 C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ost ...