Servlet学习(1)

1.Servelet的初次学习

1.概念:

servlet就是运行在服务器端的小程序(server applet),定义了一个类被浏览器访问的规则。

2.功能:
  1. 接受请求
  2. 处理请求
  3. 做出响应
3.快速入门:

步骤如下:

  1. 创建一个javaweb项目
  2. 定义一个类实现Servlet的接口
  3. 重写该接口的所有的方法
  4. 配置web.xml文件
  5. 发布项目
  6. 通过浏览器访问该servlet小程序

浏览器的地址填写:http://localhost:8080/上下文路径(idea中设置的项目路径)/demo(web.xml中配置的虚拟路经)

代码展示:

Servlet小程序
public class Demo implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //主要在这个方法里面操作响应和请求对象
        System.out.println("servlet响应了");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}
web.xml文件
<servlet>
        <servlet-name>Demo</servlet-name>
        <servlet-class>com.g.Demo</servlet-class>
        <!--在servlet-class中填写Servlet存放路径-->
 </servlet>
<servlet-mapping>
        <servlet-name>Demo</servlet-name>
        <url-pattern>/demo</url-pattern>
        <!--设置访问时的虚拟路径-->
</servlet-mapping>
4.原理:

在这里插入图片描述

2.servlet的生命周期

  1. 创建servlet(init):当servlet被创建的时候就会被初始化,servlet被创建是开始于浏览器的第一次访问。一般做一些初始化的工作。
  2. 服务(service)
  3. 销毁(destroy):一般做一些善后工作。

注意:servlet是单例的,是指tomcat会给所有创建一个线程,但是所有人的请求只会在一个servlet中执行,所以防止出现线程安全的问题,尽量不要设置成员变量,如果非要设置成员变量,那就将成员变量设置为私有常量(private final 变量),只允许读,不允许写

4.获取初始化参数的方式

servlet
@Override
    public void init(ServletConfig servletConfig) throws ServletException {
    	//获取初始化参数
        String name = servletConfig.getInitParameter("name");
        System.out.println(name);
    }
web-xml文件
    <servlet>
        <servlet-name>Demo</servlet-name>
        <servlet-class>com.g.Demo</servlet-class>
        <!--在servlet-class中填写Servlet存放路径-->
        <init-param>
            设置初始化参数
            <param-name>name</param-name>
            <param-value>初始化参数</param-value>
        </init-param>
    </servlet>

4.配置Servlet的创建时机

在web.xml的标签中配置

<!-- 修改servlet的创建时机:
负整数:默认值 -1,在第一次被访问时创建
非负整数:在服务器启动时创建数字越小,优先级越高-->
<load-on-startup>0</load-on-startup>

3.定义servlet的三种方式

  1. 继承servlet

  2. 继承genenicSelvet

    1.适配器
    2.对ServletConfig进行优化。提升config对象的作用域
    3.实现了ServletConfig接口,简化对config对象的使用方式
    
  3. 继承httpServlet(终极方式)

    需要手动重写doget方法和dopost方法
    注意去掉super.doGet(); 和 super.doPost();
    

4.idea快速创建Servlet

在这里插入图片描述

5.servlet中的全局域的学习(servlet context)

1.概念:

代表了整个web应用,当使用浏览器时,就会创建一个servletcontext对象。

获取全局域对象的方法:

//方法一
ServletContext servletContext1 = request.getSession().getServletContext();
//方法二
ServletContext servletContext2 = this.getServletContext();
2.作用:

在servlet之间传递数据;

存储所有用户共享的数据方法:

setAttribuate()以键值对的形式将数据存储到全局域对象中。

getAttrivuate()通过键找值的形式获取全局域中存放的值。

removeAttribute()删除存放在全局域中存放的值

3.域对象:
ServletContext:代表整个web应用
HttpSession:会话域
ServletRequest:请求域
PageContext:页面域

6.获取服务端的真实路径

1.真实路径

是指服务器下的路径,即创建了javaweb工程后,原始的java工程通过解译后路径会发生变化。

getRealPath()获取服务器端的动态路径:

  • 1.webRoot下:项目根目录下
  • 2.WEB-INF下: 项目根目录下/WEB-INF
  • 3.src下: 项目根目录下/WEB-INF/classes
    注意:如果getRealPath("/"),获取的路径是项目的根目录

ServletContext只能用于web环境。如果是非web环境,则使用ClassLoader来获取真实路径

2.获取服务器端的普通类的对象

不可能将服务器的路径写死

  1. 方法一(使用类加载器的方式获取普通类的对象):

    //1.获取该类对应的类加载器对象
    ClassLoader loader = this.getClass().getClassLoader();
    //2.获取文件运行的真实路径
    URL url = loader.getResource("a.txt");
    String path = url.getPath();
    //注意类加载器来获取路径也有局限性 只能获取src目录下的文件
    
  2. 方法二(getresourceAsStream()获取文件以流的形式创建):

    InputStream stream =MyUtil.class.getResourceAsStream("/a.txt");
    //将获取的的流的形式创建出来
    System.out.println(stream);
    

7.如何打war包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
war包就是一种压缩包,部署好的war包放在tomcat下的webapps文件夹下面,开启服务器war包会自动解压,删除文件只需要删除war包,文件也会随着一块删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值