一些自己javaweb学习总结

来源:互联网 发布:达内培训 php机构 编辑:程序博客网 时间:2024/06/02 06:01

一、基础: 

URL:Uniform Resource Locator——统一资源定位 

URI:Uniform Resource Identifier——统一资源标识  

URN:Uniform Resource Name­——统一资源名称

URL组成:1、协议 2、主机ip地址 (端口号) 3,相对路径http://localhost:8080/news/dex.htm (https 安全)127.0.1 无状态就是请求完,不保存下次还的从新请求协议 主机地址 项目资源地址status状态码:  

200 : 请求正常  

404 : 路径错或页面没写;  

5xx : 服务器端错误;

servlet是一个java程序(java类),是在服务器上运行以处理客户端请求并作出响应的程序Servlet是通过java代码实现页面的输出和逻辑的处理,JSP是通过HTML中填充java代码实现界面的输出和逻辑的处理。因此 JSP 的本质是 Servlet;

JSP注释 的格式为 <%– –%>,与 HTML注释 的区别在于:JSP注释不会输出到客户端、


二:JSP九大内置对象:                            

pageContext: 页面上下文对象

request :请求对象

session: 会话对象

application :应用程序对象 

response :响应对象 

out :页面输出对象 

config: 配置对象 

exception :异常对象 

page :页面对象 

page:范围里的变量无法从index.jsp传递到test.jsp,只要页面跳转了,它们就不见了;

request: 范围里的变量可以跨越forward的前后的两页,但是只要刷新页面,它们就重新计算了;

session: 范围里的变量一直在累加,开始还看不出区别,但只要关闭浏览器,再次重启浏览器访问这个页面,它们就重新计算了;

application: 范围里的变量一直在累加,除非你重启tomcat,否则它们会一直变大。 

(1) 如果我们把变量放到pageContext里,就说明这个变量的作用域是page,它的有效范围只在当前jsp页面里。也就是说,从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。 

(2) 如果把变量放到request里,就说明这个变量的作用域是request,它的有效范围是当前 请求周期所谓请求周期,就是指从http请求发起,到服务器处理结束并返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,但由于仍然是同一个请求,因此在这些页面里,我们都可以使用这个变量。 
(3) 如果把变量放到session里,就说明这个变量的作用域是session,它的有效范围是 当前会话所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程,这个过程可能包含多个请求和响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话范围内使用。
(4) 如果把变量放到application里,就说明这个变量的作用域是application,它的有效范围是 整个应用所谓整个应用是指从应用启动,到应用结束。特别地,我们没有说“从服务器启动,到服务器关闭”,这是因为一个服务器可以部署多个应用,只要你结束了当前应用,这个变量就失效了。

  • setAttribute(String Name, value)
  • getAttribute(String Name)
  • getParameter(String name)
  • getParameterValues(String name)
  • setCharacterEncoding("utf-8")
  • GET 方式的请求:直接在浏览器地址栏输入访问地址所发送的请求或提交表单的默认请求参数发送方式;
  • POST 方式的请求:以 post 方式提交表单,发送请求参数。该种方式一般将请求参数放在HTML HEADER 中传输,因此用户不能在地址栏看到请求参数值,安全性较高
  • 转发与重定向:
  • 转发带数据,重定向不带数据,转发地址栏不变,重定向地址栏变
  • response.sendRedirect(request.getContextPath() + "/page/pub.jsp");(重定向)
  • request.getRequestDispatcher("/page/on.jsp").forward(request, response);(转发)
  • session与cookie:
  • Cookie 与 Session的最大不同在于:session会随着浏览器的关闭而失效,但Cookie会一直存放在客户端的机器上,除非超出Cookie的生命周期。

  • Cookie
    1、cookie是由服务器生成,通过response将cookie写回浏览器(set-cookie),
            保留在浏览器上,
    下一次访问,浏览器根据一定的规则携带不同的cookie
            (通过request的头 cookie),我们服务器就可以接受cookie
    2、cookie的api:
    new Cookie(String key,String value)
    写回浏览器:
    response.addCookie(Cookie c)
    获取cookie:
    Cookie[] request.getCookies()
    cookie的常用方法:
    getName():获取cookie的key(名称)
    getValue:获取指定cookie的值
    setMaxAge(int 秒):设置cookie在浏览器端存活时间  以秒为单位
    若设置成 0:删除该cookie(前提必须路径一致)

三、servlet的生命周期:

1、初始化:web容器加载servlet,调用init()方法
2、处理请求:当请求到达,执行servlet()方法,中包含doget(),dopost()方法
3、销毁:服务结束时,web容器会调用distory()方法销毁servlet

1、mvc设计模式:(面试)

   模型-----model 由javaBean充当
   视图-----view
   控制器--controller
Model:由 JavaBean 充当,所有的业务逻辑、数据库访问都在Model中实现;
View:由 JSP 充当,负责收集用户请求参数并将应用处理结果、状态数据呈现给用户;
Controller:由 Servlet 充当,作用类似于调度员,即所有用户请求都发送给 Servlet,Servlet 调用 Model 来处理用户请求,并根据处理结果调用 JSP 来呈现结果;或者Servlet直接调用JSP将应用处理结果展现给用户。

2、JavaBean开发要求
1.JavaBean本身就是一个类,属于Java的面向对象编程。
2.在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:
(1)所有的类必须放在一个包中,在WEB中没有包的是不存在的;
(2)所有的类必须声明为public class,这样才能够被外部所访问;
(3)类中所有的属性都必须封装,即:使用private声明;
(4)封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;
(5)一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。

四。EL表达式:
二、JSTL  1.获取的值       <c:set var="example"  value="${100+1 } "></c:set>   <c:out value="${example }"></c:out><br>   2.删除       <c:remove var="example"/><br>   3.输出    <c:out value="${example }"></c:out><br>    4.if   <c:if test="${10>50 }"> 10>50</c:if><br>
二、迭代标签语法:<c:forEach items=“collection” var=“name” varStatus=“status” begin=“int“ end=”int” step=“int” >           //循环体           </c:forEach>
 1、遍历输出数字1--10   <c:forEach begin="1" end="10" var="i">     ${i }   </c:forEach><br>
   2、页面输出1--20之间奇数   <c:forEach begin="1" end="20" step="2" var="i">        ${i }     </c:forEach><br>   //定义一个数组   List<Integer>list=new ArrayList<Integer>();      list.add(1);      list.add(3);      list.add(4);      session.setAttribute("list", list);  
   3、list的数组遍历   <c:forEach items="${list }" var="li">     ${li }      </c:forEach><br>
   4、map的遍历   <%   Map<String ,String>map=new HashMap<String,String>();      map.put("n", "x");      map.put("a", "xi");      map.put("m", "xia");      map.put("e", "xiao");      session.setAttribute("_map", map);         %>   <c:forEach items="${_map }" var="ll">       ${ll}<br>      ${ll.value}   </c:forEach>
   5、list中存储user遍历    <%    List<User> _user=new ArrayList<User>();    User user=new User();    user.setName("rr");    user.setPwd("qq");    _user.add(user);    session.setAttribute("user", _user);          %>       <c:forEach items="${user }" var="uu">       姓名: ${uu.name }密码:${uu.pwd }   </c:forEach><br>
   6、i1页面   <jsp:forward page="index.jsp"></jsp:forward>