jsp+servlet学习笔记

                                                               servelt学习
1.http协议:http消息遵循http协议 (1)要先建立连接(2)发送请求(3) 响应请求 无状态   1.1连续发送消息
2.tomacat后面的8080会自动带上自己在那个盘装着
3.tomacat在启动的时候回自动加载xml文件跟class文件
4.反射技术在servlet里面启动
5.servelt的生命周期从服务器开启到服务器关闭
不可以写成员变量
6.同一个对象创建多个线程(service 参数不一个) 共享资源
7web.xml详解
优先执行的是tomcat下的web.xml文件,如果没有执行成功则会到指定的项目下执行web.xml文件,如果还没有成功则404(记住)
<load-on-startup>5</load-on-startup>--服务器启动初始化指定的Servlet
8.外部部署 把webroot扔在tomacat下面的app
9.冷部署  在myecplipse下面配置服务器  重写servelt需要重新启动服务器
  . 热部署  重写servelt不需要重启服务器只需要在tomcat下面的conf文件下面的serve.xml的host标签里面加入一句话

servelt对象
reqest:学习  一个请求是一个对象
    每次客户端请求发送到服务器,服务器就会创建一个request对象来封装此次的请求信息。
 *     一个请求会封装一个。会将封装的request对象,以实参的形式传递给将要执行的Servlet
 *     request的使用:
 *         获取请求行信息:
 *             getMethod()
 *             getRequestURL()
 *             getRequestURI()
 *             getQueryString()
 *             getSchema()
 *         获取请求头信息:
 *             getHeader(String name)
 *             getHeaderNames()--返回键的枚举,需要遍历枚举
 *         获取请求实体:
 *             getParameter(String name)--根据键获取用户的请求数据
 *             getParameterValues(String name)--获取同键不同值的数据
 *             getParameterNames()-------返回键的枚举,遍历枚举获取所有的键,参照下面的示例代码
 *         获取网络信息
 *             req.getRemoteAddr();------获取ip
            req.getRemotePort();------获取端口号
            req.getRemoteHost();------获取主机地址

            req.getLocalAddr();-------获取服务器ip
            req.getLocalPort();-------获取服务器端口号
/*
 *     response对象学习:
 *         操作响应头信息:
 *             setHeader(name,value)----同键的只可以有一个值
 *             addHeader(name,value)----同键可以有不同的值
 *         操作响应实体:
 *             resp.getWrite().write("响应内容");
 *         响应字符编码格式设置
 *             resp.setHeader("content-type","text/html;charset=utf-8");--设置浏览器解析接受数据的编码格式
 *             text/html---响应html数据
 *             text/plain---响应普通文本
 *             text/xml----响应xml数据           
 *             resp.setContentType("text/html;charset=utf-8");--设置浏览器解析接受数据的编码格式
 *             resp.setCharacterEncoding("utf-8");----设置服务器响应数据的编码格式
               resp.sendDirect();请求重定向                   
 *     cookie学习:
 *         cookie解决了不同请求之间信息共享的问题
            cookie的特点:
 *         cookie是一种客户端的信息存储技术
 *         设置有效期的cookie会存放在客户端的硬盘中,不管是否关闭浏览器,在有效期期间请求会附带此cookie信息
 *         没有设置有效期的cookie会存放在浏览器端的内存中,关闭浏览器即失效
 *         设置了有效路径的cookie只有在访问指定的路径的时候才会附带此cookie信息
 *     cookie的使用:
 *         1、创建cookie
 *             Cookie 名字=new Cookie(键名,值)
 *         2、设置cookie
 *             setMaxAge(秒为单位)
 *             setPath(uri)
 *         3、响应cookie信息   
 *           resp.addCookie(Cookie c)
 *         4、获取cookie信息
 *             req.getCookies()---返回Cookie[]数组
 *             Cookie.getName()---Cookie.getValue()
      session学习:
/ *         1、session机制:
 *             解决的是业务处理数据共享的问题。
 *             创建一个session对象,存储共享数据。
 *             如果有sessionID, 并且session没有失效,则不管在项目的任何位置都会拿到同一个session对象。
 *             如果有sessionID,但是seesion已经失效,则会创建一个新的session对象并响应sessionID
 *             如果没有sessionID,则直接创建一个session对象,并响应sessionID
 *       2、session的使用:
 *            创建/获取session对象
 *                req.getSesssion();
 *            设置session对象
 *                hs.setMaxInactiveInterval(秒为单位);-----session的有效期,默认是30分钟
 *                hs.invalidate();-----强制销毁session
 *    注意:
 *        session的生命周期:本次会话
 *
 *        3、session的作用域:
 *                sessionID不丢失,不销毁,作用域是本项目内
 *            使用:
 *                setAttribute(key,value);
 *                getAttribute(key);
 * */
/*
 * ServletConfig学习:
 *         1、创建ServletConfig对象
 *             ServletConfig sc=this.getServletConfig();
 *         2、使用ServletConfig对象,操作Servlet在web.xml中的初始化信息
 *             sc.getInitParameter("键名")
 *
 * 配置Servlet的初始化信息,放在servlet标记里面
 *  <init-param>
        <param-name>name</param-name>
        <param-value>zhangsan</param-value>
    </init-param>
 *
 *
 * */

/*
 *
 * ServletContext对象学习:
 *             1、又名application对象
 *             2、创建ServletContext对象
 *                 ServletContext sc=this.getServletContext();
                ServletContext sc1=this.getServletConfig().getServletContext();
                ServletContext sc2=req.getSession().getServletContext();
            3、使用:
                获取web.xml中的全局配置信息
                操作作用域
                获取文件的绝对路径--getRealPath()
 *
 * */
                                                                                                jsp学习:
    为什么需要jsp?
        Servlet对于逻辑处理是非常方便的,但是对于页面的展现是非常麻烦的。JSP的诞生是为了解决Servlet页面展现麻烦的问题的。
    JSP的特点:
        Jsp页面展现非常方面,但是业务逻辑处理非常麻烦   
 总结:
     一般我们需要将两门技术结合使用,Servlet做业务处理,jsp做页面的展现     
 jsp具体内容:
     jsp原理:(jsp就是Servlet)
             在我们访问jsp文件的时候,并没有直接去执行JSP文件,而是被服务器所拦截执行了jspServlet的类。此类会将jsp文件
         转译成对应的Servlet文件并执行。所以jsp本质还是Servlet。
     jsp的使用:
         1、常用指令集:
             page
                 language
                 import
                 pageEncoding
                 session
                 errorPage
             include:
                 静态引入:
                     转译成一个Servlet类,耦合性高
                 动态引入:
                        转译成两个Servlet类,耦合性低
                 请求转发(自带return):
                     <jsp:forward page="要转发的文件路径">
                         <jsp:param value="值" name="键"/>
                     </jsp:forward>
         2、java代码段声明
             <%java代码%>---会被转译到_jspService方法中,局部代码
         3、全局代码段声明
             <%!声明方法%>----会被转译成全局代码
         4、表达式语句
             <%=变量名/方法 %>---后面不能加分号
         5、九大内置对象    :
             四个作用域:
                 pageContext
                 request
                 session
                 application
             两个输出:
                 out
                 response
             三个打酱油:
                 page
                 config
                 exception

                                                                   el表达式
        1、作用:
            主要是用来获取作用域中的数据的,不需要导包,不需要强转
        2、语法:
            $+{}
            获取用户数据:$+{param.键名}  $+{paramValues.键名}
            获取作用域中的数据:$+{键名}
            获取作用域中集合数据:
                        list:$+{键名[角标].属性}
                        map:$+{键名.key.属性}
        3、使用:
            作用的查找顺序:
                pageContext--request---session---application:从小到大依次查找,找到了就不再找了
                指定作用域查找:${域名Scope.键名}
            不能获取普通变量的值,如果四个作用域中都没有对应的值,则什么都不显示,并不会报错
            EL表达式的逻辑运算:
                ${1+2}--${1==1}--${2>1}--${1+"3"}--${1==1?"男":"女"}
            关键字empty:
                ${empty s2}
                                                               JSTL标签库
    内容:
        核心标签库:
            输出标签:
                        <c:out value="数据"></c:out>(很少用)
            设置作用域标签:
                        c:set var="键名" value="值" scope="作用域名" /c:set
                        相当于我们写的java代码中的作用域名.setAttribute(键名,值);
                        往指定作用域中存储数据,默认是pageContext
            删除标签:
                    c:remove var="键名" scope="作用域名" /c:remove
                    删除指定作用域中的数据,默认四个作用域全部删除
            逻辑标签:
                c:if test="$+{逻辑判断}" /c:if---想当于java中的if判断
                c:choose------------------------相当于java中的if(){}else if(){}...else{}
                    c:when test="" /c:when>
                    c:when test="" /c:when>
                    c:otherwise /c:otherwise
                /c:choose

                <c:forEach items="要遍历的对象,使用el表达式获取" var="记录每次的循环结果"
                            begin="开始" end="结束" step="步长" varStatus="记录每次循环的状态">
                    ${i}-${vs.index}-${vs.count}-${vs.first}-${vs.last}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值