Java web -Servlet

1.servlet 概述

Servlet:运行在web服务器上的小的JAVA程序,用来接受和响应从客户端发送过来的请求,通常使用HTTP协议。
使用Servlet:类实现Servlet接口,并部署到服务器。
入门程序

public class ServletDemo implements Servlet{

    /*
     * 用来处理客户的请求,并且做出响应的方法
     * 
     * */   

        @Override
        public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
            // TODO Auto-generated method stub
            res.getWriter().println("hello servlet....");
        }
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>WebExercise</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>


  <!-- 配置Servlet -->
  <servlet>
  <!-- servlet名称 -->
    <servlet-name>test1</servlet-name>
    <!-- Servlet的全路径 -->
    <servlet-class>com.itheima.a_servlet.ServletDemo</servlet-class>
  </servlet>
  <!-- Servlet的映射 -->
  <servlet-mapping>
    <servlet-name>test1</servlet-name>
    <!-- Servlet的访问路径 -->
    <url-pattern>/ServletDemo</url-pattern>
  </servlet-mapping>

</web-app>

查询地址:http://localhost:8080/WebExercise/ServletDemo

2.使用ServletRequest接受参数

getParameter — 用于接受一个名称对应一个值的数据
getparameterMap — 接受一个名称对应多个值得数据
getParameterNames — 用于接受表单中的所有数据,Map的Key是表单提交的参数,Map的value是提交参数的值。
getParameterValues — 用于获取表单中提交的所有参数的名称。

2.1Servlet的实现关系

  • Servlet :接口
  • GenericServlet : 通用的接口
  • HttpServlet :Http接口,编写一个类继承HttpServlet,重写doget和doPost。

2.2Servlet ->Service -> Dao

3.servlet的生命周期

生命周期:一个对象从创建到销毁的过程
Servlet生命周期:Servlet从创建到销毁的过程
*何时创建:用户第一次访问Servlet创建Servlet的实例。
*何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候。
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中的init方法就会执行,任何一次请求服务器创建一个新的线程访问Servlet中的Service方法,在Service方法颞部根据请求的方式的不同调用DoXXX的方法(get请求调用doGet,,post调用doPost),当Servlet中服务器中移除,或者服务器关闭的时候,Servlet就会被销毁。

3.1Servlet的相关配置

【启动时创建Servlet】
Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行对Servlet的配置。
在web.xml中在标签中进行配置:
*2 //Tomcat启动就加载。
【URL-Pattern的配置】
URL-Pattern配置方式共有三种:
1.完全路径匹配 : 以 / 开始 eg:/servletDemo04, /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
2.目录匹配 : 以 / 开始,需要以 * 结束。Eg:/* , /aaa/* , /aaa/bbb/*
3.扩展名匹配 : 不能以 / 开始,以* 开始的。eg:.do , .action ,
错误的写法: /.do
*完全路径匹配 > 目录匹配 > 扩展名匹配

3.2开发中路径的编写

相对路径:都是需要找位置的相对关系,不能以 / 开头
* ./当前路径 ../上一级目录
* 使用相对路径访问:
绝对路径:不需要找位置的相对关系,以 / 开始,
*绝对路径中氛围客户端路径和服务器端路径:
*客户端路径:一定要加工程名 /day09/ServletDemo06
*服务器端路径:不需要加工程名 /ServletDemo06

4.登录5秒后,跳转到另一个界面

【使用HTTP协议中的refresh头信息】
Refresh可以定时页面跳转,需要使用程序设置头信息才可以。
【response中设置响应头】
addHeader(String Name,String value);
setHeader(String name, String value);
例如:头信息:xxx:aaa
【使用JS实现读秒的效果】

<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Refresh" content="5;url =/WebExercise/demo5-refresh/index.html">
<title>success page</title>

<script type="text/javascript">
    var time = 5;
    window.onload = function(){
        setInterval('changeTime()',1000);
    }

    function changeTime(){
        time--;
        document.getElementById("s1").innerHTML = time;
    }
</script>

</head>
<body>
    <h1>success</h1>
    <h3>页面将在<span id="s1">5</span>秒后跳转</h3>

</body>
</html>

5登录次数

【ServletContext对象】

用来存取数据,****ServletContext对象存取数据,存的数据都是有一定作用的范围的,这种对象称为是域对象。
*setAttribute
*getAttribute
*removeAttribute

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        //      1.接收表单提交的参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
//      2.封装实体对象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

//      3.调用业务岑处理数据
        UserService userService = new UserService();
        try {
            User existUser = userService.login(user);

//          4.根据处理结果显示信息
            if (existUser == null) {
//              登录失败
                response.getWriter().println("fail");
            }else{
//              登录成功
                response.getWriter().println("success");
//              记录次数。
                int count = (int) this.getServletContext().getAttribute("count");
                count++;
                this.getServletContext().setAttribute("count", count);

                response.setHeader("Refresh", "5;url=/WebExercise/showCount");
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html;charset=utf-8");
        int count = (int)this.getServletContext().getAttribute("count");
        response.getWriter().println("<h1>您是第"+count+"为登录成功的用户<h1>");
    }

6.总结

【ServletConfig】获得Servlet的配置信息

getInitParameter(String name) — 获得Servlet的初始化参数。
getIntParameterNames(String name); —- 获得所有的Servlet的初始化参数的名称。
getServletContext()
getServletName() — 获得Servlet在web.xml中的配置的Name的值。
【ServletContext】是一个域对象
*作用范围:整个web工程
*创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独的ServletContext对象。
*销毁:服务器关闭的时候,或者项目从服务器移除的时候。
-> ServletContext的作用:
*1.用来获取全局初始化参数
*2.用来获得文件的MIME的类型。
*3.作为域对象存储数据
*4.用来兑取Web项目下的文件

7.读取Web工程下的文件

【需求】
现在有一个配置文件在web工程下 的src下,项目要发布到tomcat中,需要编写一段程序读取文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值