javaWeb内容

Web服务器

  是可以向发出请求的浏览器提供文档的程序

  提供网上的信息浏览服务

常用的web服务器

  Microsoft:IIS   需要基于微软的环境

  Apache: Tomact

  Oracle: weblogic    IBM :websphere  付费商用

  Nginx: 稳定性强 ,占用内存少, 并发性强

 

Tomact 服务器

   Apache Jakarta  的开源项目

   轻量级应用服务器

   开源,稳定,资源占用小

*bin 存放各种平台下用于启动和停止Tomact的脚本文件

*Conf 配置 存放Tomact服务器的各种配置文件

Context.xml

Server.xml 记录服务器启动端口,设置乱码

Lib 存放jar包 Tomact服务器所需的各种jar文件

Logs 存放运行过程中生成日志文件

Temp存放临时文件

*Webapps  web程序放在这里 存放web项目

*Work  jsp生成的class文件放在这里,缓存文件在程序运行过程中

 CTRL+c 快速停止

Tomact注意事项

  1. Startup.bat 启动后,不许关闭,最小化
  2. 启动时,窗口一闪而过
              Jdk:C:\Program Files\Java\jdk1.8.0_161
    通过Tomact部署网站
    使用page指令设置页面属性
    Jsp 声明和使用变量
    使用jsp表达式和out实现页面的输出
    理解jsp执行原理
     
    在MyEclipse中如何添加web项目
  1. Deploy  Myeclipse J2EE project to server
    部署web应用程序
       部署应用程序到tomact的webapps目录
         生成war包
         修改server.xml
              <context path=” 虚拟路径 ”  docBase=” 项目工程位置 ”/>(适合一个服务器部署一种web项目)
              提示:路径中最好不要包含中文
     
     
    JSP(JAVA  server pages)
         运行在服务器端的页面
         使用HTML嵌套Java代码实现
    工作原理
    导入web项目
    Import  general  existing projects into workspace
    <% @   Page 指令  语言language    import     pageencoding  %>
    HTML 写java代码 使用<%  java 代码    %>实现
     
    Out叫做jsp内置对象,无需实例化就可使用
       实现数据的显示
    Jsp可以添加的注释
          HTML注释:<!--HTML注释-->
         Jsp注释:<%--jsp注释--%>
         Jsp脚本中注释:<%//单行注释%>、<%/*多行注释*/%>
    使用<%out.print();%> 实现显示内容 ———— java代码与HTML代码标签混在一起,可读性不好,不利于修改            显示数据来自于数据库
     
    <%=title %>
    特殊字符\  转义

     
     
    Jsp执行原理
      执行过程  调用XXX.jsp文件 到服务器 如果第一次访问这个文件 那么就会生成xxx_jsp.java 然后把它编译成XXX_jsp.class 然后服务器执行
    <%!   %> 是用作全局的
    Web 程序常见错误
      404 错误---找不到访问的页面或资源
            运行时,URL输入错误
            将页面放在WEB-INF下
    外部启动Tomact,未部署项目
    500错误----jsp页面代码错误
      
     
    获取数据     
    Request   response
     
    请求对象: request
       Public string getParameter(String name)获取参数
       示例:
           HTML代码: <input type=text  name=userName>
           JSP代码:String userName=request.getparameter(userName);
          获取同名的多个参数
               String[] amillds=request.getParameterValues(mailld)
             If(maillds!=null&&maillds.length!=0){//循环maillds访问提交的数据}
             Else{//未提交与参数mailld相关的数据}
     
      表单提交到JSP,中文乱码问题
           不同表单提交的方式,处理方法不同
            Post处理:request.setCharcterEncoding(utf-8)
                      Pesponse.setCharcterEncoding()
              Get处理:1.治标不治本
                       String username     
      byte[] usernames=userName.getBytes(iso-8859-1);
                        Username=new String(usernames,utf-8);-
    ------------>username=new String(userName.getBytes(ISO-8859-1),utf-8);
  2. 治本方法
          配置Tomcat\conf\server.xml文件
        URLEncoding=UTF-8
     
     
    Get与post区别           
                                   Get                           post
         参数出现在URL中         是                               否   
        长度限制                    有                             无
         安全性                   低                               高
        URL可传播                 是                              否
     
     
    在请求中保存属性 public void  setAttribute(string name,Object o)
                      Request.setAttribute(mess,注册失败)
        在请求中获取属性  public Object getAttribute(String name)
          在使用属性值的时候要做非空判断,否则会出现控制针异常
           它的返回值类型是Object类型,需要做数据类型的转换
    转发和重定向
         转发:requestDispatcher 对象
                  Forward() 方法
                       Request.getrequestdispatcher(url),forward(request,response)
    通过请求获得一个分发器来跳转到“URL”这个路径下同时携带请求和响应
                         <jsp:froward page=url/>
     
          重定向 将用户请求重新定位到一个新的URL
                   Response.sendRedirect(url)
     
       Request的作用域 :在一次请求的范围内
    Request.getcontextpath() 获得上下文路径
     
     
    转发与重定向的区别
                                      转发                    重定向
    URL变化                           否                       是                     
    重新发出请求                     不会                      会                 
    是否携带请求                      是                       否           
    目标URL要求                  仅本web应用             任意URL       
     
             重定向是客户端的行为,转发是服务器的行为     
     
    Request.getparameter  得到参数
     重定向想得到参数  处理中文乱码 编码 URLEncoder.encode(String s, utf-8)  
                                   解码  URLDecoder.decode  获取方
     
     
    Request对象常用方法
        String getparameter(String name)  根据表单组件名称获取提交数据
        String[] getParameterValues(String name) 获取表单组件对应多个值时的请求数据
        Void setCharacterEncoding(String charset) 指定每个请求的编码
        requestDispatcher getRequestDispatcher(String path) 返回一个requestDispatcher对象,该对象的forward() 方法用于转发请求
     
    JSP内置对象已经准备好,可以直接使用
        请求对象:request
        输出对象:out
        相应对象:response
        应用程序对象:application   setAttribute() 作用域
        会话对象:session   setAttribute() 作用域
        页面上下文对象:pagecontext
        页面对象:page :this setAttribute()  只能在当前页面 作用域范围最小
        配置对象:config
        异常对象:exception
     
    Request
       setAttribute() 作用于仅限于一次请求
     
    转发: 服务器内部自动帮用户完成跳转,服务器行为,无形中延长了request作用域
        
    session   setAttribute() 作用域    
    会话 :用户和服务器之间的一次对话过程,
    会话可以在多次请求中保存和使用数据
    服务端使用的记录客户端状态的一种机制--sessionId 每一个session有一个唯一的sessionID
     
     Session.getID
    Session是单用户的多页面可共享的  session数据保存在服务器端
    会话的清除和过期
       若没有清理机制,会导致性能问题或服务器崩溃
           程序主动清除session数据
              设置会话失效:session.invalidate();
              移除会话的一个属性
                  Session.removeAttribute(username);
     
           服务器主动清除长时间没有再次发出请求的session
                设置会话过期时间:
                   Public void setMaxInactiveInterval(int interval) 单位秒
                在web.xml里
                   <Session-config>
                         <sesion-timeout>30</session-timeout> 单位分钟
                   </Session-config>
     

     
          application   setAttribute() 作用域
     
     
    Cookie:跟踪用户的整个会话     自动填写用户名
    Cookie通过在客户端记录信息
    本质文本信息
    Cookie 以文件方式保存数据
          添加数据:public void  addCookie(Cookie cookie)
          获取数据: public Cookie[] getcookies()
    设置有效期:public void setMaxAge(int expiry)
      cookie.setPath("/");加上这个表示这个工程对所有可用
    Cookie关闭后session里的东西不能用
         重写URL来进行
         或者文本隐藏域
    Cookie最好不要放中文
    如果有 先编码 username=URLEncoder.encode(username,Utf-8);
        再解码  username=URLDecoder.decode(username,utf-8);
    Application 实现计数器
         方法:
           Public void setAttribute(String name,Object object);
           Public Object getAttribute(String name)
     
    Application 作用于整个作用域
     
    Request  session  application
     相同点:都可以存储属性
     不同点:request 中存储的数据仅在一个请求中可用
             Session 中存储的数据在一个会话的有效期   针对用户的单用户
             Application 中存储的数据在整个web项目中可用   
     
     
    JDBC
       JDBC API
    实现java程序对各种数据库的访问问
          一组接口和类,位于java.sql与javax.sql包
          面向接口的编程
       JDBC访问数据库步骤
  1. 加载驱动class.forName()
  2. 获取connection连接 DriverManager
  3. 创建Statement 执行SQL语句
  4.  返回ResultSet查询结果
  5. 释放资源
       Statement与PreparedStatement区别
            Preparedstatement 接口继承statement
            Statement st=connection.createStatement();
            Preparedstatement pstm=connection.prepareStatement(sql);
                  Sql语句使用“?” 作为数据占位符
                  使用setXXX() 方法设置数据
            preparedStatement预编译
                   效率,性能、开销           安全性         代码可读性
    配置文件  属性文件 properties  是一个键值对的形式
    ConfigManger.class.getClassLoader() 这个类的类加载器
    getResourceAsStream(configFile) 将配置问键读到一个输入流中
    Properties 专门读取属性文件的
    InputStream is
    Properties.load(is ) properties这个对象用load方法读取到对象中可以根据键来拿值
     
     
    单例模式
        把构造方法私有     程序提供给别人唯一对象
    单例模式的两种实现方式
         饿汉方式 ------进入这个类里就new一个对象不管调不调用方法
     
      懒汉方式-----当什么时候用我本身的方法的时候在new一个(线程不安全)
    解决使用synchronized
    public static synchronized ConfigManger getInstance(){
       if(configManger==null){
       configManger=new ConfigManger();
       }
       return configManger;
       }
    使用Tomact访问数据源
    分析:访问前需要先获取连接
          每次操作结束后,要释放资源
          频繁的连接导致系统的安全性和稳定性差
    解决:使用数据源和连接池
    连接池工作原理
    连接池是由容器提供的,用来管理池中连接对象
     
    数据源DataSource
    Javax.sql.DataSource接口负责建立与数据库的连接
    由Tomact提供,将连接保存在连接池中
      数据源用来连接数据库,获得连接Connection对象
      连接池用来管理连接Connection对象
      在程序中使用JNDI获取数据源  java 命名数据接口(JNDI)
    JNDI---DataSource-----Connection对象
     
    <Resource name=jdbc/news
        auth=Container type=javax.sql.DataSource maxActive=100
        maxIdle=30 maxWait=10000 username=root password=root  driverClassName=com.mysql.jdbc.Driver
           url=jdbc:mysql://127.0.0.1:3306/kgcnews/>
     
    当通过JNDI目录接口去寻找一个对应的数据源的时候都要加java:comp/env/+name这个前缀
     
    javaBean
       就是一个java类
       封装业务逻辑
       封装数据
     
    Service包方接口业务逻辑
    Dao(接口)-----》DaoImpl接口实现类 :数据库的数据操作
     一般一个Dao对应一张数据表
     
     
     
     Service与dao层的区别
         Dao数据操作,一般一个dao对应操作一张数据表
         Service业务逻辑
         Service去调用dao
     
    程序结构,每层要做的事情
       Dao方接口数据操作  impl 实现类   pojo封装数据javabean    util
      Service 存放业务逻辑
    数据库被dao层调用----》dao层实现类 daoimpl实现---->service调用dao层---》使用实现类serviceimpl-----》页面调用service实现业务逻辑
      各个层之间传递数据通过pojo来实现(entity类)
     
    使用脚本与HTML嵌套,页面代码很乱,可读性差,也不易于维护,
      Jsp动作标签
          通过动作标签,程序员可以在jsp页面中把页面的显示功能部分封装起来,使整个页面更简洁和易于维护
      Jsp:useBean
         装载一个将在jsp页面中使用的Javabean,发挥java组件重用的优势
          <jsp:useBean id=”name” class=”packae.class” scope=”scope”>
     Id---javaBean的引用名
     class--JavaBean的类  
    scope--javaBean的范围
      Jsp:include
          把指定文件插入正在生成的页面中
         < Jsp:include page=”url(引入的页面)” >  -->动态包含,将被包含页面的结果包含进来(先处理再包含)
     
    <%@ include file=”url” %> --静态包含,将被包含的内容包含进来(先包含再处理)
     
    页面跳转:
     Request.getRequestDispatcher().forward()转发
     Response.sendRedirect()重定向
    <jsp:forward>
         <jsp:forward page=”url”> 跳转的页面
     
    CKEditor
    网页中实现所见即所得的编辑器
    第三方组件
    第三方组织提供的组件
    使用CKEditor步骤
    下载CKEditor
     解压到项目中
    在页面中加入CKEditor
    使用CKEditor编辑内容
    提交CKEditor编辑的内容
    为新闻添加图片
       Commons-fileupload
             Htttp://commons.apache.org
             Apache公司提供的组件,实现上传功能
      实现步骤
            下载commons-fileupload-1.2.2.jar和commons-io-2.4.jar导入项目
            准备添加新闻的页面,提交至jsp
            在jsp中实现文件上传和新闻添加
     
    理解EL特点
       使用EL表达式来优化程序代码,增加程序可读性
    EL表达式Exception language
     ${EL表达式}例如:${username}
    EL操作符
      操作符“.”
         获取对象的属性,例如:${news.title}
      操作符“[]”
         获取对象的属性,例如:${news[“title”]}
         获取集合中的对象,例如:newsList[0]
    EL严格区分大小写,应严格按规范书写
     
    EL功能
       取得JavaBean对象的属性
          ${news.title}
       取得数组、List、Map类型对象的元素
          ${list[0]}
       使用各类运算符对原始数据进行简单处理
          ${totalRecordcount/pageSize}
       屏蔽一些常见的异常
          ${username}
       能实现简单的自动类型转换
          ${news}相当于(News)request.getAttribute(news)
     
    EL访问作用域
        Request.setAttribute(“news”,news);
        两种方式取数据:
        Java小脚本:request.getAttribute(“news”);
        使用EL表达式:${news}或者${requestScope.news}
    作用域            java代码取值                 EL取值
    请求作用域   request.getAttribute(“news”)   ${requestScope.news}
     
    会话作用域session.-----(“username”)  ${sessionScope.username}
    程序作用域 application.----(“count”) ${applicationScope.count}
    页面作用域pageContext.---(“userNum”) ${pageScope.userNum}
     
     
    ${news}写这个就会从最小作用域进行开始寻找先从页面作用域-请求作用域-会话作用域-程序作用域;或者${requestScope.news}
     
    传递过来的参数使用${param.XX}
     
     
    JSTL介绍
    JSTL JavaServerPages Standard Tag Library
       Jsp标准标签库
       实现jsp页面中的逻辑控制
    JSPL 使用步骤
       下载jstl.jar 和 standard.jar包
        http://archive.apache.org/dist/jakarta/taglibs/standard/binaries
    将这两个包复制到WEB-INF\lib目录
     在JSP页面中添加指令
    核心的标签
     <%@taglib uri=http://java.sun.com/jsp/jstl/coreprefix=c%>
         <c:out/> 输出文本内容到out对象,常用于显示特殊字符,显示默认值
            <c:out value="${news.title" escapeXml="true"/> }escapexml对特殊字符是否转义
          <c:set/>   在作用域中设置变量或对象属性的值
          <c:remove/>   在作用域中移除变量的值
          <c:if test-放循环条件/>      实现条件判断结构
          <c:forEach items-以..循环 var-循环得到的对象  varStatus-循环状态有一个.count用来计数  /> 显现循环结构
          <c:url/>      构造URL地址
         <c:param/>     在URL后附加参数
          <c:import/>   在页面中嵌入另一个资源内容
        
        控制格式标签
    <%@taglib uri=http://java.sun.com/jsp/jstl/fmtprefix=fmt%>
    <fmt:fromatDate/> 格式化时间
    <fmt:formatNumber/>格式化数字
     
     
     
     
       
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值