servlet和jsp的基本操作

web项目的目录结构
     1.web项目的名字就是web项目的文件夹
     2.web_test文件夹下面,必须要有一个固定的文件夹:WEB-INF
     4.WEB-INF文件夹下面,有俩个固定的文件夹和一个固定的文件
            文件夹:classes:编译好的class文件
                    lib:web项目在运行的时候所需要的第三方jar包
            文件  :web.xml:web项目的配置文件,文件内容是让tomcat服务器在启动期间来自动读取的
                                                tomcat能自动读取web项目中的web.xml原因
                                                                    1.web项目是在tomcat中部署的
                                                                    2.web项目结构是固定的
                                                                    
Servlet
     Java Servlet的简称,称为小服务程序或服务连接器,主要功能是交互式地浏览和修改数据,生产动态web内容

    Servlet          接口        有五个抽象方法         实现接口中的service方法
    GenericServlet抽象类    有一个抽象方法
    HttpServlet      抽象类    没有抽象方法           doGet方法和doPost方法
    
    HttpServlet-继承->GenericServlet-实现->Servlet接口
    
   1.在web.xml文件中配置自己编写好的servlet
        <servlet>
            <servlet-name>test</servlet-name>
            <servlet-class>com.briup.test.HelloWorld</servlet-class>
        </servlet>

        <servlet-mapping>
            <servlet-name>test</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
        
   2.写注释

servlet生命周期
      servlet单例多线程的,在web项目运行期间,一个servlet只会创建一个对象
      产生:servlet对象是在用户第一次访问它的时候,由tomcat服务器来创建的(可以通过配置进行改变,在<servlet>标签中,添加一个子标签<
            load-on-startup>,<load-on-startup>标签里面需要放一个正整数,数值的大小可以决定servlet对象被创建的先后顺序,数值越小就
            越先被创建。(如果有多个servlet对象需要在tomcat启动期间被创建的话))
      销毁:1.服务器【正常】关闭的时候
            2.服务器重新加载web项目的时候(reloading)
            
servlet的访问
      1.get方式的访问和post方式的访问
          (1)get方式访问,参数在uri后面,不安全,传参受url地址栏的限制 url?参数=值
                
        (2)post方式访问,参数在请求正文(中间有空行),较安全,参数长度是要看服务器一次性最多能够接受并且处理多少数据
            1.表单提交数据method="post"
            2.ajax中设置本次请求为post方式
            
      2.servlet接收参数来讲,俩种情况都是一样的接收
        2.1 接收单一的值(一个参数名对应一个值): request.getParameter("name")
        2.2 一个参数名对应多个值(比如多选框):request.getParameterValues("like")
        2.3 获得本次传参中的所有参数名:Enumeration<String> names = request.getParameterNames();
        2.4 获得本次传参中的所有参数及对应的值:Map<String, String[]> map = request.getParameterMap();
        
        //3.客户端传参过程中,出现中文乱码
             3.1 get方式传参,中文乱码:需要在tomcat服务器中server.xml文件中进行配置
             3.2 post方式传参,中文乱码:request.setCharacterEncoding("UTF-8");写入servlet中
             3.3 servlet中使用io流写数据到浏览器,浏览器里面显示中文乱码:设置response中的编码为UTF-8
                                                                         response.setCharacterEncoding("UTF-8");
                                                                         设置响应头部,告诉浏览器响应内容编码为utf-8
                                                                         response.setContentType("text/html;charset=utf-8");
                                                
                                            
servlet中的跳转和重定向
       4.1 服务器内部跳转:request.getRequestDispatcher(url).forward(request, response);
            1.需要使用request对象来完成
            2.服务器内部跳转期间,其实就是把请求request和响应response转发到一下资源中,所以在整个跳转期间所有涉及到的资源使用的都是同一个request和response。(我们可以利用这个特点将来在多个资源之间进行数据的传递)
            3.服务器内部跳转,【不会】改变浏览器地址栏中的地址
            4.在设置跳转的资源地址的时候,路径的前面一般要加上/
            
       4.2 客户端重定向
            1.需要使用response对象来完成
            2.每一个客户端重定向,浏览器都会发出新请求,也就意味着在服务器内部会产生新的request对象和response对象
            3.客户端重定向,【会】改变浏览器地址栏中的地址
            4.在设置重定向的资源地址的时候,路径的前面一般不加/
            
request session application
    2.1 这三种对象可以在服务器内部帮我们保存数据以及传递数据.
                类型(接口)      对象名
           HttpServletRequest   request              在doGet或者doPost方法的参数中    
           HttpSession            session              request.getSession();可传true(有就返回,没有就创建新的)false(返回null)
           ServletContext        application          request.getServletContext()或this.getServletContext();
    2.2 这三种对象的生命周期及作用范围
        request对象    每次发送请求都会创建新的对象,访问结束就销毁,使用request存/取数据只能在一次请求之内起作用,如内部跳转
        session对象 (会话)     第一次调用时创建,默认时间30分钟,可在web.xml中设置
        application对象    启动服务器就会创建,关闭就销毁,在项目运行时有且只有一个对象(单例),所有用户共用    
        
        
会话追踪技术:cookie
      1.http协议的访问是无状态的访问:http协议的访问是不会帮我们保存访问的记录/痕迹的
      2.会话追踪技术来解决这个访问无状态的问题
      3.session和cookie的位置:session是服务器端的对象,cookie在客户端和服务器端都会有,客户端以本地文件的形式存在(浏览器管理的文件),服务端以java对象的形式存在,一般说的是指客户端文件的这种
      4.session和cookie的作用:session在服务器端保存用户信息,cookie在客户端保存用户信息,同时还能保存session信息如id
      5.session和cookie之间的关系:与店铺会员类似session是会员在店里的信息,cookie是会员卡
      6.服务器端向浏览器写回cookie:new一个cookie对象,设置有效时间(没有设置就是会话cookie,关闭浏览器失效),添加到response中
      7.servlet中拿到从浏览器发送过来的cookie文件中的数据:Cookie[] cookies = request.getCookies()
      
URL重写 (也属于会话追踪技术的一种)

Filter(过滤器):对请求进行筛选判断
     1.编写filter过滤器:实现javax.Servlet.Filter接口
     2.在web.xml中配置filter过滤器
       <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>com.briup.filter.EncodingFilter</filter-class>
        </filter>

        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <url-pattern></url-pattern>有四种配置方式:
           第一种 精确匹配:<url-pattern>/test_servlet</url-pattern>
           第二种 扩展名匹配:<url-pattern>*.html</url-pattern>
           第三种 路径匹配:url-pattern>/test/*</url-pattern>
           第四种 匹配任意的url:<url-pattern>/*</url-pattern>

        
JSP:java server page属于动态网页技术的一种
        1.html标签
        2.css
        3.javascript
        4.java代码
        5.EL表达式
        6.jstl标签
        
    jsp的特点:1.jsp页面其实就是一个servlet,2.jsp页面的运行需要服务器的支持。首先jsp页面要被翻译成.java文件,然后再编译成.class文件,最后再运行这个.class文件
    
一、页面脚本元素
    1.表达式:<%= %>   <%=s.getName() %>      out.print(s.getName());
    2.脚本:<% ... %>   脚本中的代码将来会被直接翻译到_jspService这个方法中
    3.声明:<%!.....%>   一个类中写什么,就可以在声明中写什么   注意:这里面的代码,定义变量的时候要加;号,定义方法的时候不用加;号
二、指令元素
    1.<%@指令名字  属性="值" ..  %>
         1.page指令  2.include指令   3.taglib指令
    2.jsp的动作元素
    
day2s    
1.在jsp页面代码中可以直接使用的对象
         类型           名字
    PageContext         pageContext
    HttpServletRequest  request
    HttpSession            session
    ServletContext        application
    Object                page
    HttpServletResponse response
    JspWriter            out
    ServletConfig        config
    Throwable            exception    
    
4.EL表达式
     形式:${ }      从一个范围里面取值或者从一个对象中取值或是向页面输出值
    
5.JSTL标签库
    把JSTL标签库导入到某一个jsp页面中:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <c:forEach>标签:
    1.遍历List集合:
      students是放进request对象中的一个List集合,集合中存放的是Student类型的对象.
      items=""属性值是要遍历的集合
      var=""  属性值是每次遍历到的对象用什么名字的变量去接收。
    <c:forEach items="${students}" var="stu">
        <tr>
            <td>${stu.id }</td>
            <td>${stu.name }</td>
            <td>${stu.age }</td>
        </tr>
     </c:forEach>
    2. 遍历Map集合:
    <c:forEach items="${map}" var="entry">
          ${entry.key }-->${entry.value.id } &nbsp; ${entry.value.name } &nbsp; ${entry.value.age }<br>
      </c:forEach>
    3.<c:out>标签:向页面输出内容
    <c:out value="hello"></c:out>
    <c:out value="${students[2].id}"></c:out>(students是放在request中的List集合,集合里面是Student对象)
    4.<c:set>标签:<c:set var="name" value="zhangsan" scope="request"></c:set>(向某一个范围对象中存放一个值。)
    5.<c:remove>标签:<c:remove var="name" scope="request"/>
    6.<c:if>标签:条件判断
    <%
      request.setAttribute("score",40);
      %>
      <c:if test="${score>85 }">
          <font color="red">你的分数超过了85分</font>
      </c:if>
    <c:if test="${score>95 }">
          <font color="red">你的分数超过了95分</font>
      </c:if>
    7.<c:choose>标签 <c:when>标签 <c:otherwise>标签
    <c:choose>
          <c:when test="${score>=90 }">优</c:when>
          <c:when test="${score>=80 }">良</c:when>
          <c:when test="${score>=70 }">中</c:when>
          <c:when test="${score>=60 }">及格</c:when>
          <c:otherwise>差</c:otherwise>
      </c:choose>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值