后端相关汇总_plan

1. 解决JDBC作业问题

    Statement 语句对象
       |
       |-Preparedstatament 预编译语句对象
    
         优点: 1) 对sql语句预编译处理,多次执行同样的sql语句时,效率高;

               2) 使用PreparedStatement对象,可以支持sql语句动态传参,更灵活,不易出错.


计划:

1. 使用表格与表单和Javascript完成练习
  


2. JSP页面

    1)JSP页面的组成元素
    2)JSP页面中的脚本元素 [服务器端脚本]
      <%  Java代码 %>
      <%=%> 表达式输出
      <%!%> 脚本声明
      
      
    3)JSP页面中的指令元素
        <%@ page %>
        <%@ include %> 包含指令
        <%@ taglib %> 标签库指令
    
    脚本元素相关练习
   
--------------------------------------------------
3. Servlet的使用
   
   
   servlet练习
 <servlet>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>com.wust.servlet.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <!-- mapping 映射  一一对象   -->
  <servlet-name>HelloServlet</servlet-name>
  <url-pattern>/hello.c</url-pattern>
  </servlet-mapping>


   
   乱码解决:
    默认情况下都是使用iso-8859-1  Latin1拉丁英文
   
     服务端 -->客户端 
        response.setContentType("text/html;charset=UTF-8");
     
     客户端 --> 服务端
     
      get:
      
      
      
      post: 
//设置请求的字符集编码
request.setCharacterEncoding("UTF-8");




jsp页面的组成元素:

  1) 指令 <%@ %> 
  2) 小脚本  <% %>
  3) 表达式输出 <%= %>
  4) 脚本声明 <%! %>
  5) HTML静态文本 <html> ...</html>
  6) JSP标准动作 <jsp:动作名 属性="" />
  7) 注释  <!-- 客户端注释-->  <%-- 服务端注释--%>
  

Servlet 简介

   服务器端的小应用程序,本质是一个Java类
   
   javax.servlet.http.HttpServlet类 (抽象类)
      |
   自定义Servlet类 [重写override 父类方法]
    |-doGet(HttpServletRequest request,
            HttpServletResponse response){
            this.doPost(request,response);
      }
    
    404--请求的资源不存在[地址,部署]
    405错误 [Servlet找不到对应的处理方法]
    500 错误 [服务端错误]  
    |-doPost(HttpServletRequest request,
            HttpServletResponse response){
            //.....
      }
      
    添加web.xml配置 [servlet的映射 mapping]  
      
            
    执行Servlet程序
    
    乱码解决 -->   客户端 -- 服务端
------------------------------------------------------
plan:

1. servlet作业讲解


2. get与post两种请求方式比较 [理解]
    
    get: /calc?num1=3&num2=5
    post: /calc

3. 页面的跳转 (重点)


4. 请求作用域  
     |-request Scope 作用域
         在服务器中分配一块内存空间,用于保存客户端在一次请求过程中的数据.
         注意: 该数据仅在一次请求过程中有效.
       
       操纵作用域的方法:
           setAttribute("name",Object); --存包
           
           Object getAttribute("name");
           
           removeAttribute("name");
-------------------------------------------------
5. 会话作用域
     |-一次用户的连接过程[多次请求与响应] 中有效.
     
    用于登录成功后,用户在当前web应用中多次的请求页面时,仍能访问到的信息.比如,当前登录的用户信息.
    
    
-------------------------------------------------
租房网项目
1. 搭建项目结构

2. 导入静态页面

3. 登录和注册
   |-实际开发中,不会针对每个请求都去创建一个Servlet类.
     
     一个模块多个请求交给一个Servlet处理.
     
  登录  - LoginServlet
  注册  - RegisterServlet
  注销  --LogoutServlet
  修改密码 --UpdatePwdServlet
  找回密码 ---...
  ...
  
-------------------------------------------------------------------------------------------------

2.租房网系统实现 --> 记住当前登录的用户
  
  用户的注销
  
  会话技术
 ------------------------------------------------ 
  Servlet类中作用域有三种:
     1) 请求作用域 --HttpServletRequest request
            |-仅在一次请求过程中有效
            
     2) 会话作用域 -- HttpSession  session
            |-在客户端的一次连接(多次的请求与响应)过程中有效
            
     3) 全局作用域 -- ServletContext application
            |-多个客户端(会话)可以共享的数据
               在一次web服务器启动过程中有效.
              
      setAttribute("name",Object);
      Object getAttribute("name");
      void removeAttribue("name");
      
 会话失效 -->意味着会话作用域中的属性数据全部丢失.
 
 session的关闭
  1)调用session. invalidate()方法,使session对象失效
  2)访问时间间隔大于非活动时间间隔, session对象失效
        |- 非活动时间间隔 30分钟
  3)关闭浏览器时,session对象失效



  作业: 实现房屋列表功能
  

plan:
--------------------------------------------------
1. 复习巩固 EL+JSTL
    
    EL -- 简化变量或对象访问输出
    
    <%=request.getAttribute("error")%>
    ${ error } --> pageContext -->request-->session-->application
    
    ${ requestScope.error }
    
    ${ requestScope.student.name }
    
    JSTL --标准标签库
      |- jar包 [jstl.jar standard.jar]
         
         核心标签core
         <%@ taglib uri="" prefix="c" %>
         
         通用:
         <c:set />  <c:out /> <c:catch /> 
         <c:remove /> 移作用域中的属性
         条件:
         <c:if test="" />  
         <c:choose>
            <c:when test="">
            </c:when>
            <c:when test="">
            </c:when>
            <c:when test="">
            </c:when>
            ...
            <c:otherwise>
            </c:oterwise>
         </c:choose>
         迭代:
      <c:forEach var="单个对象" 
         items="${作用域中的集合或数组}
         begin="" end="" step="" varStatus="">
                                    |-index,count,first,last
                                    
      </c:forEach>
------------------------------------------------------------ 
2.解决重复提交问题

使用令牌标记 Token   
        //获取当前请求相关联的会话对象
HttpSession session = request.getSession();
//获取会话作用域中的token
String token = (String)session.getAttribute("token");
if(token==null){
//说明并没有通过add.jsp发送addHouse的请求
//进入房屋列表管理页面
gotoManage(request, response);
return;
}else{
//移除会话作用域中的token
session.removeAttribute("token");
}
------------------------------------------------------
3. 过滤器

   简介
   入门使用
     |- <url-pattern></url-pattern>
        
        /*  -->所有的请求执行过滤器
         
         *.jsp  -->对所有jsp页面的请求执行过滤器
         
         /page/*   则表示对于 /page路径下的所有请求执行过滤器
   
         /test  -->只针对test的请求路径执行过滤器
         
         
   过滤器应用: --租房网举例
      1) 解决字符集编码设置
      
      2) 权限控制

-------------------------------------------------------------
4. 验证码


-------------------------------------------------------------

5. 分页 + 文件上传  [扩展功能]



新加评论 评论标题: