【无标题】

javaweb日记一

1.servlet技术

介绍:servlet是Javaweb三大组件之一,其他分别是filter过滤器,listener监听器;

作用:接收客户端请求并相应客户端数据

1.1使用方法:

1.src目录下编写一个实现servlet接口的类

public class Hello 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 {
        
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

2.在service方法下编写自己想要实现的功能

public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello");
    }

3.在webapp/WEB-INF/web.xml下配置访问地址

	<servlet>
        <!-- servlet类的别名,可以随便取名,但最好还是和类名一致-->
        <servlet-name>Hello</servlet-name>
        <!-- servlet 类的全名-->
        <servlet-class>com.example.servlet.Hello</servlet-class>
    </servlet>
    <!--配置servlet类的访问地址-->
    <servlet-mapping>
    <!--这里面的servlet-map里的servlet-name要和servlet里的servlet-name一致-->
        <servlet-name>Hello</servlet-name>
        <!--斜杆表示的路径是http://ip:port/工程路径-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

1.2 servlet的生命周期

1.执行servlet构造器方法
2.执行init初始化方法
3.执行server方法
4.执行destory方法
servlet构造器和init方法只会在servlet类创建时执行一次,server方法每调用一次servlet类就会执行一次,destroy方法只有在web工程停止时调用一次

1.3请求分发处理

表单有get和post两种请求,需要用到分发处理方法
方式一:
在实现servlet类的类里的处理方法

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello");
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        if ("post".equalsIgnoreCase(method)){
            System.out.println("post");
            dopost();
        }else if("get".equalsIgnoreCase(method)){
            System.out.println("get");
            doget();
        }
    }
    private void doget(){
        System.out.println("1.---");
    }
    private void dopost(){
        System.out.println("2.---");
    }
    

2.实际生产中用servlet的方法(继承httpsevlet类来实现servlet程序)

使用方法:

1.编写一个类去继承httpservlet类
2.根据业务重写doget()或dopost()方法
3.到web.xml中配置servlet程序的访问地址

import java.io.IOException;
import java.net.SocketTimeoutException;

public class httpservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("methed1");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("methed2");
    }
}
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <!-- servlet类的别名-->
        <servlet-name>Hello</servlet-name>
        <!-- servlet 类的全名-->
        <servlet-class>com.example.servlet.Hello</servlet-class>
    </servlet>
    <!--配置servlet类的访问地址-->
    <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>httpservlettest</servlet-name>
        <servlet-class>com.example.servlet.HttpServletTest</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>httpservlettest</servlet-name>
        <url-pattern>/httpServT</url-pattern>
    </servlet-mapping>
</web-app>

3.idea中使用servlet的步骤

在包下新建就行,如图


注``意不要勾选Create Java EE6+ annotated class 就行,这个用的时3.0的注释,学习时没用这个

3.servletConfig类的了解

 ##  1.servletConfig在Servlet类的init方法中作为参数出现,有以下几个常用方法:
//获取servlet的名
        System.out.println("servlet 的名字:"+config.getServletName());
        //获取servlet里的初始化参数的名
        System.out.println("servlet的initParameter名:"+config.getInitParameterNames().nextElement());
        //获取servlet初始化参数的值
        System.out.println("servlet的initParameter值:"+config.getInitParameter("url"));
        System.out.println(config.getServletContext().toString());

初始化参数的名和值在web.xml里

<servlet>
        <servlet-name>httpservlettest</servlet-name>
        <servlet-class>com.example.servlet.HttpServletTest</servlet-class>
        <init-param>
        <!--初始化的参数 -->
            <param-name>url</param-name>
            <param-value>jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8</param-value>
        </init-param>
    </servlet>

重写init方法时要记得在方法中添加super.init(config);

4.servletContext类

1.什么是ServletContext:一个接口,表示servlet上下文对象
2.一个web工程只有一个servletContext对象实例
3.是一个域对象
域对象:存:setAttribute; 取:getAttribute; 删:removeAttribute
4.作用:
获取xml中配置的上下文参数context-param;

 ServletContext servletContext = getServletConfig().getServletContext();
        String namespace = servletContext.getInitParameter("name");
        System.out.println(namespace);

获取当前的工程路径;

System.out.println(servletContext.getContextPath());

获取工程部署后在服务器磁盘上的绝对路径

//斜杠表示映射到web目录下
 System.out.println(servletContext.getRealPath("/"));

存储数据

        ServletContext servletContext = getServletConfig().getServletContext();
		servletContext.setAttribute("name","value");
        Object name = servletContext.getAttribute("name");
        System.out.println(name);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值