Javaweb之Servlet

servlet

servlet就是sun公司开发动态web的一门技术

在这些API中提供一个接口,叫做servlet

开发一个servlet,只需要完成两个步骤:

编写一个类,实现Servlet接口

把开发好的java类部署到web服务器中

实现了servlet接口的java程序叫做servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    version="4.0"
    metadata-cpmplete="true">
</web-app>

由于get或者post只是请求实现的不同方式,可以相互调用,业务逻辑一样

编写Servlet的映射?为什么需要映射:

我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径

Servlet运行原理

Mapping -->映射

一个Servlet可以指定一个映射路径

<servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>/meimei</url-pattern>
    </servlet-mapping>

一个Servlet可以指定多个映射路径

<servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>/meimei</url-pattern>
    </servlet-mapping>
    
<servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>/meimei01</url-pattern>
    </servlet-mapping>
    
    
    
    <servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>/meimei02</url-pattern>
    </servlet-mapping>

一个Servlet可以指定通用映射路径

<servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>/meimei/*</url-pattern>   //通配符
    </servlet-mapping>

默认请求路径

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

可以自定义实现请求路径

<servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>*.meimei</url-pattern>   //*前面不能加映射的路径
    </servlet-mapping>

指定一些后缀或者前缀等等

<servlet-mapping>
        <servlet-name>chunchun</servlet-name>
        <url-pattern>*.meimei</url-pattern>//前面也可以加东西  比如  chunchun.meimei
    </servlet-mapping>

优先级问题

指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求

servletContext

上下文

web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用

作用:共享数据

在这个Servlet中保存的数据,可以在另一个servlet中拿到

共享数据

ServletContext servletContext = this.getServletContext();
        String name = (String) servletContext.getAttribute("name");
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print(name);
​

获取初始化参数

        ServletContext context = this.getServletContext();
        String url = context.getInitParameter("url");
        resp.getWriter().print(url);
  <context-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
    </context-param>

请求转发

      ServletContext context = this.getServletContext();
        RequestDispatcher Dispatcher = context.getRequestDispatcher("/cc"); //转发的请求路径
        Dispatcher.forward(req,resp);//调用forword实现请求转发
​

读取资源文件

Properties

在java目录下新建properties

在resources目录下新建properties

他们都被打包到了同一个路径下:classes,我们俗称这个路径为classpath

思路:需要一个文件流

username=meimei
password=123456
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        InputStream as = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");//把资源变成一个流
        Properties prop = new Properties();
        prop.load(as);
        String username = prop.getProperty("username");
        String password = prop.getProperty("password");
        resp.getWriter().print(username);
        resp.getWriter().print(password);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值