1.Servlet入门与介绍
来源:互联网 发布:mac xshell替代工具 编辑:程序博客网 时间:2024/06/05 21:37
Servlet:server applet
定义: Servlet是运行在服务器端的小程序,定义浏览器能被服务器访问的一个规范,其实是一个接口。
功能:接受请求
处理请求
响应请求
快速入门:
1.在MyEclipse下创建web project项目
2.定义一个Java类,实现Servlet接口
3.重写所有未实现方法
4.配置Servlet,在web.xml
<!-- 配置Servlet,为了配置Servlet的访问路径 -->
<servlet>
<servlet-name>demo1</servlet-name> //取别名
<servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class> //我们定义的子类的全类名
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<!-- 设置访问路径,以/开头 -->
<url-pattern>/demo</url-pattern> //虚拟路径
</servlet-mapping>
4.发布项目 (按住服务器右键,添加项目,点运行)
5.访问该子类的网址
浏览器中:http://127.0.0.1:8080/项目名/web.xml中配置的虚拟路径名
(服务器ip:所连接服务器端口号)
当此端口号与其他进程发生冲突时候,可以手动配置,在服务器文件,conf文件夹下server.xml
原理:
服务器通过反射的方式 创建Servlet对象,调用其方法
* servlet生命周期:
* 被创建:默认情况下,Servlet第一次被访问时,被创建,调用init()方法。
只执行一次。Servlet是单例的。可能会存在线程安全问题,尽量不要定义成员变量。
可以配置Servlet的创建时机。在web.xml的<servlet>标签中配置<load-on-startup>
<!-- 修改servlet的创建时机:
* 负整数:默认值 -1,在第一次被访问时创建
* 非负整数:在服务器启动时创建
* 数字越小,优先级越高
-->
<load-on-startup>0</load-on-startup>
* 提供服务:每一次被访问时,会调用service()方法提供服务
* 被销毁:服务器关闭时,servlet被销毁。
服务器正常关闭是,在销毁Servlet之前,会调用destory()方法
Servlet需要实现的五大抽象方法
1、public void init(ServletConfig config)
@Override
public void init(ServletConfig config) throws ServletException {
//初始化只调用一次,分为启动即初始化和请求页面后初始化
// 在这个方法里,一般做一些初始化的事情
// 我可以获取一些配置参数
// http://localhost:8090/MyServletDemo/demo1
// ServletConfig 配置对象 是一个接口 子类对象由服务创建 当服务器调用init方法时作为参数传递给你
// 获取在web.xml中配置的初始化参数
// 可以获取一些配置参数
this.config = config;
// ServletConfig 配置对象 是一个接口 子类对象由服务创建 当服务器调用init方法时作为参数传递给你
// 获取在web.xml中配置的初始化参数
// 方式1
String name = config.getInitParameter("username");
System.out.println(name);
String age = config.getInitParameter("age");
System.out.println(age);
System.out.println(config.getClass());
// 方式二
Enumeration<String> names = config.getInitParameterNames();
System.out.println("-------------------");
while (names.hasMoreElements()) {
String key = names.nextElement();
String value = config.getInitParameter(key);
System.out.println(key + "==" + value);
}
// 其实我们初始化的事情,应该放在服务开启的时候就去初始化
// 那如何在服务器一开启就初始化呢 我们在web.xml中可以去配置
// <load-on-startup>0</load-on-startup>
// 默认值是-1 是你在第一次请求时才去调用init()方法
// 如果是非负整数 服务器开启时就会调用 init()方法
// 通过全局域对象 来存储数据
ServletContext context = config.getServletContext();
context.setAttribute("num", "10");
System.out.println("我是初始化函数");//这是响应到服务器端的,非浏览器端
}
ServletConfig对象:配置对象
ServletConfig是一个接口 在Servlet初始化的时候 有服务器创建其子类对象传递给 init()方法
功能
1.获取servlet初始化参数
2.获取ServletContext对象 //全局域对象,在整个工程范围内都可以使用
因为 ServletContext对象是由服务器创建出来的 我们要获取其对象 得通过ServletConfig对象中的方法才能获取出来
* ServletContext getServletContext()
3.获取servlet配置的名称 就是在web.xml中给servlet起的名字
* String getServletName()
* Servlet中对应getServletConfig方法。要想使用该方法获取config对象。
context.getAttribute("num"); //设置全局域变量
context.setAttribute("num", "10");//获取
context.removeAttribute("num");//移除
则需要提升config对象的作用域。
1.声明成员变量ServletConfig
2.在init方法中赋值
3.在getServletConfig方法中获取
如何配置初始化参数:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.west.demo.MyServletDemo</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>zhangsan</param-value>
</init-param>
<init-param>
<param-name>age</param-name>
<param-value>20</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>//
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
2.通过本类this.getServletConfig()获取ServletConfig
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return config;
}
3. 对外提供服务的方法 ,每次请求都会调用
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
System.out.println("服务来了");
String ip = req.getRemoteAddr();//获取访问者ip
String ip1 = request.getLocalAddr();//获取服务器端ip
String method = request.getMethod();//获取请求的方法get/post
System.out.println("来自于" + ip + "地址的访问本机ip地址" + ip1);
if("192.168.1.1".equals(ip)){
// System.out.println("主机访问来了");
res.getWriter().write("<font size='18' color='red'>localhost visit</font>");
}else {
// System.out.println("非主机访问");
PrintWriter writer = res.getWriter();
res.getWriter().write("<font size='18' color='red'>Other visit</font>");
}
}
4.获取版本信息, 一般不关心
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
5.服务器关闭时,会调用此类,代表Servlet子类的销毁
@Override
public void destroy() {
// TODO Auto-generated method stub
}
- 1.Servlet入门与介绍
- Servlet入门介绍
- Servlet入门基础介绍
- servlet入门介绍
- Servlet入门简单介绍
- servlet入门:servlet介绍及生命周期
- Servlet理解与入门
- Servlet与JSP入门
- Tomcat与Servlet入门
- servlet的介绍与学习
- Java Servlet 介绍与实例
- Java Servlet介绍与实例
- Servlet的介绍与使用
- SpringMVC框架与Servlet介绍
- web入门-Servlet与过滤器
- day11-Tomcat与Servlet入门
- JSP入门:介绍什么是JSP和Servlet
- JSP入门:介绍什么是JSP和Servlet
- Codeforces 877 B. Nikita and string (技巧)
- MySQL 远程无法连接
- 文章标题
- deleteDupInList
- 容器篇:取vector最后一个元素的方法
- 1.Servlet入门与介绍
- Tablayout+recyclerview+ok+ 购物车见下文
- Import/Export options
- ARM-IDE MDK5不兼容MDK工程
- 雪花飘落动画-帧动画系列
- Linux man详解
- 深入理解Java中的String
- 曹可爱之最可爱-Vue.js入门 (一)初识
- Java之——后台运行Jar包并设置内存参数