Java Web阶段总结

JavaWeb项目代码

零散知识

  1. 查看系统:window+r -> dxdiag

  2. 卸载时:先卸载eclipse或myeclipse,在卸载jdk

快捷键

  1. 快速查找Java文件:选中类名 -> ctrl+shift+h

零、 服务器

0.1 服务器

0.2 tomcat服务器与eclipse整合

  1. eclipse环境配置:

    window -> preferences -> -> Java -> Instatlled JREs -> 如果有问题 -> add -> Standart VM

  2. 取消校验:

    window -> preferences General -> Validation -> 应该默认全选,现在改为只选第2个

0.3 tomcat的目录结构

  1. bin目录:可执行命令

  2. conf:配置

  3. lib:jar包

  4. logs:日志

  5. temp:临时文件

  6. webapps:开发好的web程序

  7. work:将jsp翻译成servlet后的文件

一、 基础

  1. 新建项目:new -> Dynamic Web Project -> 起名 -> next -> next -> 有个框,勾选以下

  2. 项目想要被浏览器访问到,必须继承HttpServlet类 -> 重写doGet和doPost方法 -> 在class上写“@WebServlet(“名字”)”

1.1 HttpServlet类

  1. 如果某个类继承HttpServlet类,那么这个类就是servlet。浏览器可直接访问servlet

    1. 重写HttpServlet中的doget和doPost方法。get请求传输的参数直接在导航栏中显示。一般默认通过地址栏访问用get请求。

    2. servlet类的包名为cn.java.servlet,同时给类命名时在类名后加servlet。

虚拟路径的配置方式

  1. 第一种方式:通过@webserviet(“虚拟路径”),虚拟路径前一定有“/”

  2. 第二种方式,在WebContent -> WEB-INF -> web.xml -> 上方写

        <servlet>
            <servlet-name>别名</servlet-name>
            <servlet-class>指定的一个servlet的路径</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>上面的别名</servlet-name>
            <url-pattern>对外虚拟路径<url-pattern>
        </servlet-mapping>

1.2 为工程配置默认的访问路径

  1. 第一步:写一个html,放在WebContent下,

  2. 第二步:在WebContent -> WEB-INF -> web.xml -> -> -> 删除之前所有的 -> 写第一步的html

1.3 request

  1. 接受参数:request.getParameter(),该方法的返回值一定是字符串

  2. 修改编码:request.setCharacterEncoding(“utf-8”)。该方法只能修改post提交方式,get提交不能修改。

    get修改编码:修改tomcat服务器的编码:P57

  3. 获取访问协议:request.getScheme()。http——超文本传输协议

  4. 获取端口号:request.getServerPort()

  5. 获取服务器名:request.getServerName()

  6. 获取工程名:request.getContextPath()

  7. 获取访问者的IP:request.getRemoteaddr()

二、 jsp

jsp与html文件类似,html中能使用的标签在jsp中都能使用,但是jsp中可以写Java代码。jsp本质是servlet

修改jsp默认编码:

1. 点击window
2. 点击preferences
3. 搜索jsp
4. 找到jsp files点击
5. 右边有一个Encoding,点击、下拉找到utf-8
6. 一路ok

jsp执行流程:请求jsp引擎,将文件生成java文件,将Java文件编译为class文件,class常见对象,给用户相应

组成:静态内容、指令、表达式、小脚本、声明区、注释

2.1 jsp组成

2.1.1 jsp指令(面试)

  1. 指令是给服务器看的。

  2. 语法:<%@ 指令名 属性名=属性值 %>

    1. page指令:<%@ page 属性名=属性值 %>。设置整个jsp页面的相关属性。

       如:<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8">
      

      属性有:

      1. language=“java”:指定jsp页面使用的脚本语言。现在已经沦为摆设,没有实用性

      2. contentType=“text/html; charset=utf-8”:告诉服务器以html的方式来解析jsp文件,同时采用utf-8编码

      3. import:引用脚本语言中使用到的类文件

      4. extends:可以指定jsp生成时继承的Servlet类

      5. session:是否可以使用session

      6. errorPage:产生错误后,跳转的错误处理页面

      7. contentType:描述网页内容类型与编码格式

    2. taglib指令:使用标签库定义的新的自定义标签

       如:
      
       <%@ taglib uri="tagliburi" prefix="别名"%>
      
      
      
       uri:用来匹配引入的标签库描述文件,对应标签库中的uri
      
       prefix:标签库引入时的别名,再使用标签中需要加入 别名:前缀
      
       有时我们在一个jsp文件中引入多个标签,prefix是用来区别不同标签库的!
      
      
      
      
      
       jstl标签库:
      
       使用:
      
           1. 引入相关jar包,jstl标签 standard.jar和jstl.jar两个jar包 
      
           2. 在jsp页面通过taglib指令引入核心标签库
      
           3. 常用标签:
      
               <c: if test="${条件 }"></c:if> 
      
      
      
               <c: forEach items=“被循环的信息” begin=“开始的元素” step=“迭代步长” var=“当前变量名” varStatus=“循环状态的变量名”></c:forEach>
      
                   如:<C:forEach var="i" begin="1" step="2" end="5"> ${i } </c:forEach>
      
      
      
               <c: choose>
      
                   <c: when test=""></c:when>
      
                   <c: otherwise></c:otherwise>
      
               </c:choose>
      
    3. include指令:<%@ include file=“引入页面所在路径” %>将一个外部文件嵌入到另一个jsp或html文件,同时解析这个页面中的jsp语句

2.1.2 jsp脚本片段

  1. 可以在脚本片段中书写Java代码

  2. 语法:在中写<% 代码 %>,将<% %>看为Java方法中的大括号,所以不能定义方法

  3. 注释:

    1. html注释

    2. jsp注释:<%-- --%>

2.1.3 脚本表达式

  1. 语法: <%= 表达式 %>

  2. 作用:

    1. 向浏览器打印数据:out.print()

    2. 取值

2.1.4 注释

  1. html注释:

  2. jsp注释:<%-- --%>

  3. jsp脚本注释://或/**/

2.1.5 声明(区)

  1. 定义:指的是Java中的成员位置,可以用来声明成员变量,声明成员方法

  2. 格式:

    <%!
    声明区
    %>

2.2 内置对象

2.2.1 九大内置对象

内置对象(隐含对象),就是在jsp中,不需要创建(由服务器<容器>创建),可以直接使用的对象

  1. out:out对象时JSPWriter类的实例,是向客户端输出内容常用的对象

    类型:JSPWriter

    作用:向客户端输出内容

  2. request:

    类型:HttpServletRequest

    作用:请求对象,包含了请求的信息

    getParameter(“key”):获取用户提交的表单信息

    setCharacterEncoding(“编码集”):设置请求编码,放置乱码

    setAttribute(“key”,“value”):将数据保存到request范围内的变量

    forward(String url):转发

    getParameterValues(String name):返回包含参数name的所有值的数值

  3. response:

    类型:HttpServletResponse

    作用:相应对象,用来给用户进行相应

    addCookie():将一个cookie对象发送到客户端

    sendRedirect(String url):重定向

  4. session:

    类型:HttpSession

    作用:会话对象,用来进行数据的共享和会话的跟踪

    setMaxInactiveInterVal(int num):设置session对象的有效活动的时间

    invalidate():销毁当前的session

  5. application:

    类型:ServletContext

    作用:全局的Servlet上下文对象,每个应用只有一个,从应用启动,就创建,指导应用消亡,对象才被释放

  6. config:

    类型:ServletConfig

    作用:Servlet配置对象,较少使用

  7. page:

    类型:Object

    作用:指的是当前jsp页面对象

  8. pageContext:

    类型:PageContext

    作用:页面的上下文,用来在一个页面中进行数据的共享和通讯

  9. exception:

    类型:Throwable

    作用:用于错误处理页面,用来收集其他页面产生的错误信息,只有isErrorPage='true’时才产生这个对象

2.2.2 四大作用域

为了在页面、请求、用户之间传递和共享数据,jsp提供了四个作用域,这些作用域规定了数据可以传递和共享的范围,以及数据存活时间

  1. pageContext:页面作用域

  2. request:请求作用域

  3. session:会话作用域

  4. application:应用程序作用域

常用方法:

1. setAttribute(key,value):

2. Object value = getAttribute(key):

3. removeAttribute(key):

4. 作用域取值方式:

    1. 脚本表达式:<%=request.getAttribute() %>

    2. EL表达式:${key }
2.2.2.1 作用域取值方式:
  1. 脚本表达式:<%=request.getAttribute() %>

  2. EL表达式:${key }

2.2.2.2 转发和重定向
  1. 转发:request.getRequestDispatcher(“页面”).forward(request, response)

  2. 重定向:response.sendRedirect("")

  3. 区别:

    1. 请求重定向:客户端行为。从本质上将等同于两次请求,前一次的请求对象不会保存,地址栏的url会改变

    2. 请求转发:服务器行为。是以此请求,转发后请求对象不变,地址栏和url不变

2.3 EL表达式

EL表达式,用于快速的从域对象中取出信息,并输出至网页.从小往大找值

  1. 取出字符串或基本数据类型的格式:$(key)

  2. 取出对象的属性:

2.4 EL运算符

  1. 算数运算

  2. 关系运算

    1. > gt

    2. >= ge

    3. < lt

    4. <= le

    5. == eq

    6. != ne

  3. 逻辑运算

    1. && and

    2. || or

    3. ! not

  4. 三元运算

  5. 特殊运算

    1. empty:判断EL表达式中的表达式是否成立

2.5 jsp六大动作

  1. include

    1. <jsp:include page=“引用文件的地址” flush=“false”></jsp:include>

    2. 作用:引入jsp文件,在转换时期没有被引入,只有当执行到include代码位置的时候,才会动态编译载入

  2. useBean

    1. <jsp:useBean id=“别名” class=“包名.类名” scope=“作用域”></jsp:useBean>。指向java对象,需要先创建类对象
  3. setProperty

    1. <jsp:setProperty property=“属性名称” name=“别名” value=""/>
  4. getProperty

    1. <jsp:getProperty property=“属性名称” name=“别名”/>
  5. forward

    1. <jsp:forward page=“转发”></jsp:forward>
  6. param

    1. <jsp:param value=“转发参数” name=""/>

       <jsp:forward page="转发">
      
           <jsp:param value="转发参数" name=""/>
      
       </jsp:forward>
      
      
      
       在转发页面获取值
      
       ${param.name }
      

2.6 include指令与include动作的区别

  1. include动作在转换为Java文件时,引入的文件不会被编译,只有客户端请求到生成的servlet文件时,才会被动态编译载入

  2. include指令是在jsp程序的转换时期,将引入的文件内容嵌入,然后统一进行编译

三、 Servlet

3.1 简介

  1. Servlet就是运行在服务器Tomcat上的Java程序

  2. Serlvet用来处理客户端的请求,以及负责对客户端的响应

  3. Servlet默认是单例模式,每次用户访问都是开启一个新线程,调用service方法处理。

3.2 使用Servlet

  1. 先引入servlet-api.jar

  2. 编写Java类,继承HttpServlet

  3. 重写service(request, response)方法

  4. 在service方法中处理请求,以及进行响应

3.3 Servlet配置到web.xml

配置到web.xml的作用:让tomcat帮我们创建对象,并映射地址,当地址匹配,由tomcat调用这个对象的service方法进行处理

  1. 将servlet配置到web.xml并起别名

     <servlet>
    
         <servlet-name>任意标识符</servlet-name>
    
         <servlet-class>类的全称(包名+类名)</servlet-class>
    
     </servlet>
    
  2. 根据别名,映射一个网址

     <servlet-mapping>
    
         <servlet-name>与第一步标识一致</servlet-name>
    
         <url-pattern>/地址</url-pattern>
    
     </servlet-mapping>
    
    
    
     “/地址的替换”
    
     1. /:拦截没有后缀的请求
    
     2. /*:拦截所有请求
    
     3. *.do:拦截所有以.do结尾的请求
    

3.4 常用方法

  1. request.setCharcterEncoding(“UTF-8”)

  2. request.getParameter("")

  3. request.getParameterMap():请求接受参数,封装到map中,通过map.get(key)获取

  4. request.setAttribute(“key”,value):将数据设置到request作用域中

  5. request.getRequestDispatcher().forward():转发

  6. request.getSession()

  7. request.getServletPath():获取servlet请求路径

  8. response.setCharacterEncoding(“utf-8”)

  9. response.sendRedirect():重定向

  10. response.getWriter()

  11. response.setContentType(“text/html;charset=UTF-8”):设置响应类型

  12. response.getWriter()

3.4 servlet生命周期

  1. init:初始化

  2. service:服务

  3. destroy:销毁

  4. GC回收

3.5 get和post

  1. get请求

    1. 请求地址在url中以键值对的形式拼接

    2. 传输数据量小

    3. 不安全

  2. post请求

    1. 请求的数据存在于请求体中

    2. 传输数据量大,如视频

    3. 较安全

  3. get乱码:

    new String(username.getBytes(“ISO-8859-1”),“utf-8”);

四、 session

4.1 什么是session

服务器端为了保存用户的状态而创建的一个特殊对象

4.2 获取session对象

  1. request.getSession(boolean flg)

4.3 常用方法

  1. session.setArrtribute(String name, Object obj)

  2. session.getArrtribute(String name)

  3. session.removeAttribute(String name)

  4. session.invalidate():将session设置为失效,一般在退出时使用,但要注意的是:session失效的同时 浏览器会立即创建一个新的session的,你第一个session已经失效了 所以调用它的getAttribute方法时候一定会抛出NullPointerException的

五、 cookie

5.2 cookie使用

Cookie uname = new Cookie();

cookie如果存中文必须设置编码,因为cookie不能存储中文,否则报错

URLEncoder.encode(值,编码)

5.3 cookie和session的区别

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上

  2. cookie不是很安全,别人可以分析存放在本地cookie并允许cookie欺骗

  3. session会在一定时间内保存在服务器上

  4. 单个cookie保存数据不超过4k,很多浏览器限制一个站点最多保存20个cookie

  5. 建议:登录信息放在session其他信息如果需要保留放在cookie中

六、 过滤器 Filter

七、 监听器

八、 web项目

8.1 错误码

  1. 200:成功,客户端请求成功

  2. 404:找不到资源

  3. 500:浏览器请求服务器,服务器处理错误(代码书写错误)

  4. 505:http版本版本不受支持

8.2 Javaweb项目读取properties配置文件

  1. 方式一:

8.3 web三大组件

Servlet、Filter(过滤器)、Listener(监听器)

  1. 过滤器

    1. 通过过滤器技术,对web服务器管理所有web资源:如jsp、servlet、静态图片、文件、静态html进行拦截,从而实现一些特殊的功能,如使用url级别的权限访问控制、过滤敏感词汇、压缩相应信息等一些高级功能

    2. 使用:

      1. 编写一个类,实现filter接口

      2. 在web.xml中进行配置拦截地址

                <filter>
                    <filter-name> </filter-name>
                    <filter-class> </filter-class>
                </filter>
                
                <filter-mapping>
                    <filter-name> </filter-name>
                    <url-pattern> </url-pattern>
                </filter-mapping>
  1. 监听器

    1. web监听器是servlet中特殊的类,能帮助开发者监听者监听web中的特定事件,如:ServletContext、HttpSession、ServletRequest的创建和销毁、变量的创建和销毁和修改,可以在某些动作前后增加处理,实现监控

    2. 用途:

      1. 统计在线人数 利用HttpSessionListener

      2. 加载初始化信息 利用ServletContextListener

      3. 统计网站访问量 利用ServletContext

         ServletContext监控:实现ServletContextListener接口
        
         HttpSession监控:实现HttpSessionLinstener接口
        
         ServletRequest:实现ServletRequestLinstener接口
        
    3. 使用监听器

      1. 创建监听器,实现某种接口

      2. web.xml配置监听器

              <listener>
                  <listener-class> <listener-class>
              </listener>
      
      1. 在jsp中添加操作

九、 xml

  1. web.xml文件是用来初始化配置信息:

    比如welcome页面、servlet、filter、listener、servlet-mapping、启动加载级别等

十、 Ajax

10.1 Ajax概念和原理

  1. Ajax是一组原有技术的综合运用,涉及如下技术:

    1. 以XMLHttpRequest为核心发送请求和接受响应

    2. 以JavaScript为基础使用XMLHttpRequest

    3. 以XML或JSON作为数据交互格式

    4. 以HTML和CSS作为数据展现(渲染)

10.2 Ajax作用和优点

  1. Ajax交互(异步)和传统交互(同步)区别

    1. 请求的发送和接受:

      传统:浏览器直接发送HTTP请求,然后由浏览器直接接受服务器返回的结果,直接呈现在浏览器页面上

      Ajax:浏览器利用js调用XMLHpptRequest对象发送HTTP请求,然后利用XMLHpptRequest接受服务器的返回结果,然后需要利用js将结果显示到浏览器页面

    2. 区分Ajax请求和传统请求:

      请求的Header格式不同,Ajax请求会在请求Header部分多一组参数值“x-requested-with:XMLHttpRequest”,如果存储该参数就可以认为是Ajax

    3. 服务器响应结果不同:

      传统:服务器一般会调用Servlet或JSP生成一个HTML界面给浏览器,然后浏览器显示

      Ajax:服务器一般调用Servlet处理,然后生成一个JSON或者xml字符串给XMLHttpRequest

    4. 页面刷新:

      传统:整个页面刷新

      Ajax:局部刷新

    5. 同步和异步

      传统:同步交互- 请求1–>响应1–>请求2–>响应2

      Ajax:异步交互- 请求1–>请求2–>响应1–>响应2

10.2.1 Ajax作用和优点

  1. 作用:

    1. 页面局部刷新处理

    2. 页面不改变,异步请求和响应

  2. 优点:

    1. 用户操作更连续,提高用户体验

    2. Ajax交互传输数据量较小,提升程序性能

    3. 异步处理,可以进行异步加载和请求处理

    4. 减少整个页面刷新率

10.2.2 Ajax使用

  1. 创建XMLHttpRequest对象,发送请求(客户端js编程)
        function sendRequest(){    
            //创建XMLHttpRequest对象
            var xhr = null;
            if(window.XMLHttpRequest){
                xhr = new XMLHttpRequest(); //支持chrom,IE7、8、9
            }else{
                xhr = new ActiveXObject("Microsoft.XMLHTTP"); //支持IE5、6
            }           
            //创建http请求
            xhr.open("get","hello.do",true);
            //发送Ajax请求
            xhr.send(null);
        }
  1. 服务器端处理Servlet/JSP(服务端Java编程)

  2. 解析服务器返回数据结果,显示到页面(客户端js编程)

        //创建http请求
        xhr.open("get","hello.do",true);
        //设置回调处理函数
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4 && xhr.status == 200){ //判断请求成功
                var msg = xhr.responseText; //获取服务器返回的字符串信息
                //操作
            }
        }
        //发送Ajax请求
        xhr.send(null);

10.3 jQuery的Ajax

十一、 JSON

11.1 JSON概念和基本使用

  1. JavaScript Object Nitation是JavaScript对象格式,属于JavaScript语言数据格式

  2. 格式:{“key”:value,“key”:value}

    key是字符串,value是任意类型

    访问value可以使用变量.key获取

11.2 JSON字符串转化为json对象

  1. 方法一:JSON.parse(字符串)

  2. 方法二:var obj_data = eval("("+data+")");

11.3 将Java对象转换为JSON字符串

  1. 方法一:使用gson.jar工具包

     Gson gson = new Gson();
    
     String data = gson.toJson(obj);
    
  2. 方法二:使用json-lib.jar工具包

    1. 单个Java对象

       JSONObject json = JSONObject.fromObject(obj);
      
       String strng = json.toString();
      
    2. Java集合

       JSONArray fromObject = JSONArray.fromObject(list);
      
       String strng = fromObject.toString();        
      

十三、 文件上传

项目一:员工管理系统(仿)

项目二:图书管理系统(按上例流程独立完成)–问题解决

1. 步骤

参考上个案例总结

  1. 页面信息分析(功能、内容)(不是真页面,只是看有什么)

  2. 数据库设计

  3. 项目分析

    1. 使用技术

    2. 需要jar包

    3. 规划包

  4. 规划web.xml

    1. 创建servlet,规划请求
  5. 在需要的时候编写工具类

  6. 实现之前规划的各请求

2. 页面(http为模板)

1.1 http/jsp

  1. span:对元素进行分组

  2. section:定义文档中的节

  3. nav:用来作为页面导航的连接组,其中的导航元素连接到其他页面或当前页面的其他部分,并不是所有的连接组都要别放进nav元素

  4. strong:和标签一样,用于强调文本,但它的强调程度更强

  5. label:为input元素定义标注,不会向用户呈现任何特殊效果,不过,为鼠标用户改进了可用性:在label元素内点击文本,就会触发次控件,就是说,当用户选择改标签时,浏览器会自动将焦点转到和标签相关的表单控件上。

    1. for属性可把label绑定到另一个元素。请把for属性的值设置为相关元素的id属性值。
  6. form表单:

    1. enctype="multipart/form-data"属性:只对要上传文件的表单有效,通过实例化对象获取文件和表单提交数据;当表单中没有文件时使用该属性,则所有表单提交数据为null

1.2. js

3. servlet

  1. 登陆时为什么要session参数?

    答:session作用域为一次会话有效,通过session的参数可以在登陆后实现jsp页面“xxx,您好”功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值