zoukankan      html  css  js  c++  java
  • web-01

    <--做笔记使用,不做参考-->

    1、Servlet是用于开发web项目的技术。是一个接口,自定义的类继承HttpServlet类之后变成一个servlet。Servlet可以对web浏览器或者其他HTTP客户端程序发出的请求进行处理。

    每次写完一个Servlet类之后都要在web.xml中注册一个servlet才能使用。<Servlet></Servlet>   <ServletMapping></ServletMapping>

    2、Servlet客户端请求的步骤及处理流程

    (1)首先用户通过单击一个url链接来向Servlet发起请求。

    (2)Web服务器接收到请求之后,会把该请求交给相应的容器进行处理,此时容器会创建两个对象:HttpServletResponse和HttpServletRequest。

    (3)容器根据请求的url信息找到对应的Servlet,然后针对该请求创建一个单独的线程,同时把第2)步中创建的两个对象以参数的形式传递到新创建的线程中。

    (4)容器调用Servlet的service()方法来完成对用户请求的响应,service()方法会调用doPost()或者doGet()方法完成具体的响应任务,同时把生成的动态页面返回给容器。

    (5)容器把响应信息组装成HTTP格式返回给客户端,此时,线程运行结束,同时删除2)步创建的两个对象。
    原文链接:https://blog.csdn.net/Dangsir666/article/details/90340896

    3、请求和相应的方法

    request方法列举:
    request.getCharacterEncoding() // 获取字符编码
    request.getContentLength()// 返回请求体内容的长度
    request.getContentType() // 获取内容类型
    request.getContextPath() // 获取上下文路径,就是"/"+工程名
    request.getMethod() // 获取请求方式获取请求方式(GET与POST为主,也会有PUT、DELETE、INPUT)
    request.getRequestedSessionId() // 获取sessionId
    request.getRequestURI() // 获取"/"+工程名+请求路径
    request.getRequestURL() // 获取完整的请求地址,不带queryString
    request.getServletPath() // 获取请求路径
    request.isSecure() // 获取此请求是否使用安全协议(比如https)
    
    response方法列举:
    setContentType() 告知浏览器数据类型 
    setCharacterEncoding() 设置Response的编码方式 
    setHeader() 设置消息头
    setIntHeader() 通知浏览器在给定的时间后刷新,时间以秒为单位 
    setDateHeader() 处理页面缓存,防止JSP或者Servlet中的输出被浏览器保存在缓冲区中。 java中一般设置为response.setDateHeader("Expires", 0) 与jsp中response.setDateHeader("Expires", -1)效果一致 
    setStatus() 设置相应状态码 
    sendError() 返回服务器的预设错误网页并显示错误信息。response.sendError(404)返回的Content-Type:text/html 
    sendRedirect() 重定向页面 
    getOutputStream() 获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在) 
    getWriter() 获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在) 
    addCookie() 添加Cookie encodeURL() 对给定的url进行编码,以用于sendRedirect方法; 如果不需要编码,则直接返回(未经修改的)url。 
    encodeRedirectURL() 都对url附加上jsessionid参数进行了处理,如果需要,则在url的 path后面附加上;jsessionid=xxx;如果不需要则直接返回传入的url。

    原文链接:https://blog.csdn.net/weixin_39352976/article/details/79402989

    4、9大内置对象

    pageContext  存东西

    request  存东西

    response

    session  存东西

    application  存东西

    config

    out

    page

    exception

    获取web开发的常用对象

    pageContext.setAttribute("name","licunzhi");保存的数据只能在一个页面中有效

    request.setAttribute("name","licunzhi");保存的数据旨在一次请求中有效,请求转发会携带这个数据

    session.setAttribute("name","licunzhi");保存的数据只会在一次会话中有效,从打开浏览器到关闭浏览器

    application.setAttribute("name","licunzhi");保存的数据只在服务器中有效,从打开服务器到关闭服务器

    应用场景:

    request:客户端向服务器端发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的

    session:客户端向服务器发送请求,产生的数据,用户用完一会还有用的,比如:购物车

    application:客户端向服务器端发送请求,产生的数据,一个用户用完了,其他用户可能还要用,比如:聊天数据

    5、EL表达式  ${}

    需要导包,jstl,standard

    获取数据

    执行运算

    6、浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet

    JSP最终也会被转换成为一个Java类

    JSP本质上就是一个servlet

    在jsp页面中只要是Java代码就会原封不动的输出

    如果时html代码就会被转为out.write("<html> ");这样的格式输出到前端

     7、jsp表达式

    <%--JSP表达式作用:用来将程序的输出,输出到客户端--%>
    <%=变量或者表达式%>
    例如<%=new Date()%>
    JSP脚本片段:
    <%
        int i =0;
    %>
    <hr>
    <%
        for (int j = 0; j <3 ; j++) {
            out.write("1---0");
        }
        out.write(i);
    %>
    JSP声明会被编译到JSP生成的Java类中,其他的就会被生成到_jspService方法中
    
    
    在JSP中嵌入Java代码即可
    <%%>
    <%=%>
    <%!%>
    <%--注释--%>

    JSP指令

    <%@page args...%>   //指定页面类型,例如404 500  <%@ page errorPage="error/500.jsp" %>

    拼接网页,网页很多都是共用头部和底部,所以每次只需要写中间的主体内容就好了

    <%@include file="common/header.jsp"%>

    网页主体

    <%@include file="common/footer.jsp"%>

    JSP<标签>来拼接网页

    <%jsp:include page="/common/header.jsp"%>

    网页主体

    <%jsp:include page="/common/footer.jsp"%>

    拼接网页的时候 Java代码要注意变量不要重复,因为他们拼接之后就相当于是同一个程序中的代码

    8、JSP标签   JSTL标签  EL表达式

    JSP标签

    <jsp:forward page="**.jsp">转发

    <jsp:param name="" value="">参数   键值对

    9、Javabean

    实体类:Javabean有特定的写法:必须要有一个无参构造 属性必须私有化  必须有对应的get/set方法  

    实体类一般用于对应数据库中的字段

    ORM:对象关系映射:表---->类  字段---->属性  行记录---->对象

       private int id;
        private String name;
        private int age;
        private String address;
    
        public person(){
    
        }
        public person(int id,String name,int age,String address){
            this.id=id;
            this.name=name;
            this.age=age;
            this.address=address;
        }

     10、MVC三层架构

    MVC---->modle view controller  模型 视图 控制器

     现在的MVC架构:

     Model  业务处理:业务逻辑(Service)

        数据持久层:CRUD(Dao)

    View:展示数据

         提供链接发起servlet请求(a,form,img...等等设置a标签跳转)

    Controller(当前的学习阶段Controller就是servlet)

        接收用户的请求:request可以从请求中拿到    请求参数,session信息...等等

        交给业务层处理对应的代码

        控制视图的跳转

    最简单的例子就是登录,登录成功则为下图中的操作反向处理一次

    11、过滤器filter

    //web.xml中的代码
    <?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="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>se</servlet-name> <servlet-class>space.urbeautiful.Filter.testFilter</servlet-class> </servlet> <servlet-mapping> <servlet-name>se</servlet-name> <url-pattern>/servlet/a</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>se</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping> <filter> <filter-name>filter</filter-name> <filter-class>space.urbeautiful.Filter.filter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name>
          //只要是/servlet的任何请求都会经过这个过滤器 <url-pattern>/servlet/*</url-pattern> </filter-mapping> </web-app>
    //Filter中的代码
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html"); filterChain.doFilter(servletRequest,servletResponse); }
    //Servlet中的代码
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("你好 未来"); }

    将设置字符集解决乱码问题放在过滤器中过滤,请求的时候会过滤一次,响应回去的时候也要过滤一次

    tomcat启动的时候,filter自动初始化,在tomcat关闭的时候自动销毁过滤器

    /servlet/*   即将servlet下面的所有都过滤,不建议直接/*  每个包有每个包的作用,要有分别的过滤器

    12、监听器(awt中用的较多  各种监听器) 暂时不学

    13、下一期过滤器及其他

  • 相关阅读:
    PAT甲级——A1133 Splitting A Linked List【25】
    PAT甲级——A1132 Cut Integer
    PAT甲级——A1131 Subway Map【30】
    PAT甲级——A1130 Infix Expression【25】
    PAT甲级——A1129 Recommendation System【25】
    PAT甲级——A1128 N Queens Puzzle【20】
    PAT甲级——A1127 ZigZagging on a Tree【30】
    PAT甲级——A1126 Eulerian Path【30】
    PAT甲级——A1125 Chain the Ropes【25】
    集合的一个小发现
  • 原文地址:https://www.cnblogs.com/jzspace/p/13122875.html
Copyright © 2011-2022 走看看