什么是servlet?
1)servlet 是运行在 Web 服务器中的小型 Java 程序。
2)servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
一、servlet,实现向页面输出内容步骤:
1、创建一个类继承GenericServlet
重写service(ServletRequest req, ServletResponse res)
* ServletRequest代表请求 * ServletResponse代表响应
2、向页面输出内容
res.getWriter().write("要输出的内容");
**直接输出int型会弹出未知窗口
<servlet-name>servletDemo1</servlet-name>//符合命名规则即可
<servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletDemo1</servlet-name>//和上面的name要相同
<url-pattern>/hello</url-pattern> //地址访问
</servlet-mapping>
二、 获取web.xml中初始化参数
**若文件中有两个相同的username则只读取文本第一个username对应的值
配置局部参数:(<init-param>要写在<servlet>标签中)
<init-param>
<param-name>username</param-name>
<param-value>666666</param-value>
</init-param>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
String username = config.getInitParameter("username");
方式二:得到枚举在根据名称得到值:
Enumeration names = config.getInitParameterNames();
while (names.hasMoreElements()) {
String str = (String) names.nextElement();
String value = config.getInitParameter(str);
System.out.println(str+"---"+value);
}
三、获取web.xml全局的初始化参数
配置全局参数:
<context-param>
<param-name>url</param-name>
<param-value>localhost</param-value>
</context-param>
1、ServletContext context = getServletContext();
别的同局部初始化参数相同
四、统计网页浏览次数
分析:
在启动tomcat服务器时候,会为每个项目创建一个servletContext对象,
在这个项目里面如果通过servlet1向servletContext里面设置一个值,
在这个项目里面的其他的servlet里面可以得到这个值
1)servletContext域对象:在一定的范围内,存值和取值,范围是整个web项目
2)存值:setAttribute(String name, Object object)
3)取值:getAttribute(String name)
4)首先创建servlet1,通过servlet1向servletContext里面设置一个值
其次,再创建servlet2,在servlet2获取通过servlet1设置的值
项目第一次被访问时,会执行init()方法,且只执行一次。
想要服务器启动时执行init()方法,要在<servlet>标签里加<load-on-startup>正整数</load-on-startup>
(正整数填大于1的数,因为1被默认的服务器占用了)
五、使用servletContext对象获取web项目中的资源
db.properties中一般有drivername、url、username、password
第一步:
ServletContext context = getServletContext();
1)文件所放位置的不同,路径的写法也不同(相对路径)
InputStream in = context.getResourceAsStream("路径");
2)通过相对路径得到文件的绝对路径(因为配置文件放在WebRoot文件夹下)
String path = context.getRealPath("/db.properties");
再 InputStream in = new FileInputStream(path);
第二步:
Properties p = new Properties();
p.load(fis);
drivername = p.getProperty("drivername");
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password");
六、使用类加载器读取文件
1、读取的文件的位置是 classes里面的文件
2、得到类加载器
1)首先得到Class
* 第一种方式:类名.class
* 第二种方式:对象.getClass()
* 第三种方式:Class.forName("包类路径")
2)使用Class得到类加载器
3、代码
//得到类的Class
Class clazz = ServletDemo.class;
//得到类加载器
ClassLoader loader = clazz.getClassLoader();
//得到要操作文件的输入流
//文件的路径,因为读取的classes里面的文件,直接写文件的名称
InputStream in = loader.getResourceAsStream("db.properties");
1)servlet 是运行在 Web 服务器中的小型 Java 程序。
2)servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
一、servlet,实现向页面输出内容步骤:
1、创建一个类继承GenericServlet
重写service(ServletRequest req, ServletResponse res)
* ServletRequest代表请求 * ServletResponse代表响应
2、向页面输出内容
res.getWriter().write("要输出的内容");
**直接输出int型会弹出未知窗口
3、在web项目中的web.xml进行配置,让服务器知道是一个servlet
<servlet><servlet-name>servletDemo1</servlet-name>//符合命名规则即可
<servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletDemo1</servlet-name>//和上面的name要相同
<url-pattern>/hello</url-pattern> //地址访问
</servlet-mapping>
二、 获取web.xml中初始化参数
**若文件中有两个相同的username则只读取文本第一个username对应的值
配置局部参数:(<init-param>要写在<servlet>标签中)
<init-param>
<param-name>username</param-name>
<param-value>666666</param-value>
</init-param>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
方式一:根据名称得到值
ServletConfig config = getServletConfig();String username = config.getInitParameter("username");
方式二:得到枚举在根据名称得到值:
Enumeration names = config.getInitParameterNames();
while (names.hasMoreElements()) {
String str = (String) names.nextElement();
String value = config.getInitParameter(str);
System.out.println(str+"---"+value);
}
三、获取web.xml全局的初始化参数
配置全局参数:
<context-param>
<param-name>url</param-name>
<param-value>localhost</param-value>
</context-param>
1、ServletContext context = getServletContext();
别的同局部初始化参数相同
四、统计网页浏览次数
分析:
在启动tomcat服务器时候,会为每个项目创建一个servletContext对象,
在这个项目里面如果通过servlet1向servletContext里面设置一个值,
在这个项目里面的其他的servlet里面可以得到这个值
1)servletContext域对象:在一定的范围内,存值和取值,范围是整个web项目
2)存值:setAttribute(String name, Object object)
3)取值:getAttribute(String name)
4)首先创建servlet1,通过servlet1向servletContext里面设置一个值
其次,再创建servlet2,在servlet2获取通过servlet1设置的值
项目第一次被访问时,会执行init()方法,且只执行一次。
想要服务器启动时执行init()方法,要在<servlet>标签里加<load-on-startup>正整数</load-on-startup>
(正整数填大于1的数,因为1被默认的服务器占用了)
五、使用servletContext对象获取web项目中的资源
db.properties中一般有drivername、url、username、password
第一步:
ServletContext context = getServletContext();
1)文件所放位置的不同,路径的写法也不同(相对路径)
InputStream in = context.getResourceAsStream("路径");
2)通过相对路径得到文件的绝对路径(因为配置文件放在WebRoot文件夹下)
String path = context.getRealPath("/db.properties");
再 InputStream in = new FileInputStream(path);
第二步:
Properties p = new Properties();
p.load(fis);
drivername = p.getProperty("drivername");
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password");
六、使用类加载器读取文件
1、读取的文件的位置是 classes里面的文件
2、得到类加载器
1)首先得到Class
* 第一种方式:类名.class
* 第二种方式:对象.getClass()
* 第三种方式:Class.forName("包类路径")
2)使用Class得到类加载器
3、代码
//得到类的Class
Class clazz = ServletDemo.class;
//得到类加载器
ClassLoader loader = clazz.getClassLoader();
//得到要操作文件的输入流
//文件的路径,因为读取的classes里面的文件,直接写文件的名称
InputStream in = loader.getResourceAsStream("db.properties");