JSP总结

JSP

第三章 JSP语法

  1. HTML创建表单表格

    <form action="<%=request.getContextPath() %>/loginservlet" method="post" >
         ...
    	账户:
         <input type="text" name="userid" id="userid" >
         密码:
    	<input type="Password" name="userpwd" id="userpwd">
    	<input type=submit> 
    	<input type=reset>
    </form>
    
    
    <form name="form1" method="post" action="login_deal.jsp">
        用户名:<input name="username" type="text" /><br />  
        密码:<input name="pwd" type="password" id="pwd" /><br />
      	<input type="submit" name="Submit" value="提交" />
      	<input type="reset" name="Submit2" value="重置" />
    </form>
    
    request.setCharacterEncoding(“utf-8");
    String username= request.getParameter("username");
    String pwd= request.getParameter("pwd");
    out.println("用户名为:"+username);
    if ( pwd!=null && pwd!=“” ) {
       int int_pwd = Integer.parseInt(pwd);
       out.println("密码为:"+int_pwd);    
    }
    
    <%String path=request.getContextPath();%>
    <a href="<%=path%>/a.jsp">aaa</a>
    
    
  2. 脚本元素:

    • 隐藏注释、<%-- --%>

    • 声明、<%! %>

      变量可以用访问修饰符如private修饰、可以声明方法,方法能被代码块调用、可以定义静态语句块

    • 脚本片段、<% %>

      不能添加访问控制修饰符、不能定义方法、不能定义static语句块

    • 表达式、<%= %>

      不以 ;结尾,out.write(表达式);

  3. 指令元素:<%@ %>

    • 页指令 <%@page %>

      <%@page import="dao.UserDao" %>导包

      设置当前JSP页面的相关信息、一个JSP页面可以包含多个Page指令。

    • 包含指令<%@include %>

      用于在当前JSP页面中,在当前使用该指令的位置嵌入其他的文件

      合并显示两个页面内容、形成一个.java文件,一个.class文件

      静态联编两个文件间可以共享同一变量

    • 标签库指令<%@taglib %>

  4. 动作元素:< jsp:useBean >< jsp:setProperty >< jsp:getProperty >< jsp:include >< jsp:forward >< jsp:param >

    • < jsp:forward page = “next.jsp”/>

      发起页面内容不能显示到浏览器中,程序直接跳转next.jsp,显示内容。运行后形成2个.java文件,2个.class文件

    • < jsp:include page = “next.jsp”/>

      发起页面和目标页面都能显示在浏览器中。程序显示两个文件内容。运行后形成2个.java文件,2个.class文件。
      运行时把两个.class文件内容显示到浏览器中,动态联编。

    PS:动态联编,两个文件之间不共享同名变量,因为是两个独立的类。

    • <jsp:param name=“参数 ” value=“值"/>用来提供key/value 的信息,不单独使用

    • <jsp:useBean id="Goods" scope="page" class="handle.shangping"/>

      id:变量名

      scope: 存储范围,page: 页面直接使用,scope指定范围内,id指定的实例不存在,则生成实例

      class: 完整类名

    • <jsp:setProperty>通常与<jsp:useBean>标识一起使用,它将调用Bean中的setXxx()方法给Bean的简单或索引属性赋值。赋的值可以是请求中携带的参数。

  5. <%@include page=”文件”%><jsp:include></jsp:include>的区别

    1. 执行时间上:
      • 前者在翻译阶段
      • 后者在请求处理阶段
    2. 引入内容不同
      • 前者引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。
      • 后者引入执行页面或servlet所生成的应答文本。

第四章 内置对象

HTTP–无状态的

  • request对象获取客户浏览器的请求
  • response对客户浏览器进行响应
  • session保存着会话期间所需要传递的数据信息,基于用户,随用户的断开而消失,可在多个页面之间传递一个用户的特定信息
  • application提供应用程序在服务器中运行时的全局信息,实现用户之间共享数据,基于服务器,随服务的关闭而消失,可在一个页面上保留多个用户的信息
  • out
  1. 重定向

    response对象中的sendRedirect(url)方法

    两次请求和响应,不是一个request,地址变化

  2. 定时刷新

    response.setHeader("Refresh","1");

    response.setHeader(“Refresh”,“3;url=index.jsp");跳转新页面

第五章JavaBean

分离静态工作部分和动态工作部分。

1. 值Bean

严格遵循了JavaBean的命名规范,通常用来封装表单数据、数据库数据,作为信息的容器

2. 工具Bean

可以不遵循JavaBean规范,通常用于封装业务逻辑,数据操作等,例如连接数据库,对数据库进行增、删、改、查和解决中文乱码等操作。

3. JavaBean规范

  1. 实现java.io.Serializable接口:实现对象在网络不同操作系统中传输、对象存储等。

  2. JavaBean是一个public的类

  3. 类中必须存在一个public无参的构造函数

  4. 如果类的成员变量的名字是xxx(通常private),则类中可(不必须)使用两个方法:

    1. public 类型 getXxx():用来获取属性xxx

    2. pubic void setXxx(类型 值) :用来修改属性xxx

4. JavaBean属性

  1. 简单属性(Simple): getxxx() / setxxx()
  2. 索引属性(Indexed): 通常为数组类型的属性
  3. 绑定属性(Bound)
  4. 约束属性(Constrained)

5. Bean的存放目录:

Bean的源文件连同包放在src下,编译成功的Bean连同包放在站点\WEB-INF\classes目录下。

6. 使用

  • <jsp:usebean>定义要用的JavaBean

  • <jsp:setproperty>存储属性值

  • <jsp:getproperty>提取属性值

  • <jsp:useBean id="Goods" scope="page" class="handle.shangping"/>

    id:变量名

    scope: 存储范围,page: 页面直接使用,scope指定范围内,id指定的实例不存在,则生成实例

    取值获取方式描述
    page页面直接使用创建的JavaBean实例只能够在当前的JSP文件中使用,包括通过include静态指令包含的页面中有效
    requestrequest对象的getAttribute方法获取创建的JavaBean实例可以在请求范围内进行存取
    sessionsession对象的getAttribute方法获取创建的JavaBean实例可以在session范围内进行存取
    applicationapplication对象的getAttribute方法获取创建的JavaBean实例可以在application范围内进行存取

    class: 完整类名

  • <jsp:setProperty>通常与<jsp:useBean>标识一起使用,它将调用Bean中的setXxx()方法给Bean的简单或索引属性赋值。赋的值可以是请求中携带的参数。

    <%-- 单独用 --%>
    <jsp:useBean ……/> 
    <jsp:setPropery  ……/> 
    <%-- 作为子标签:只有bean实例是新创建的情况才执行setProperty --%>
    <jsp:useBean ……>         
    	<jsp:setPropery ……/> 
    </jsp:useBean>
    
  • <jsp:getProperty name="Bean实例名" property="propertyName"/>读取属性值,输出到页面

第六章 Servlet

1. 生命周期

  1. 客户端请求服务器,服务器加载Servlet,并创建一个Servlet实例;
  2. 容器调用Servlet的init()方法;
  3. 容器封装请求响应对象,调用service()方法;
  4. 请求处理结束后,将结果返回给容器;
  5. 容器将结果返回给客户端进行显示;
  6. Web服务器关闭时,调用destroy()销毁Servlet实例。
在这里插入图片描述

2. 会创建doGet / doPost

protected void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, I0Exception {
	doGet(request, response);
}

3. 获取客户端提交的信息

4. 调用JavaBean处理结果返回客户端

第八章

JavaWeb应用程序

<%--login.jsp--%>

<form action="<%=request.getContextPath() %>/loginservlet" method="post" >
    用户名:<input name="username" type="text" /><br/>  
    密码:<input name="pwd" type="password" id="pwd" /><br/>
  	<input type="submit" name="Submit" value="提交" />
  	<input type="reset" name="Submit2" value="重置" />
</form>
//loginservlet.java

@WebServlet("/loginservlet")
public class loginservlet extends HttpServlet {
    public loginservlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getSession().invalidate();//清除session的所有信息
        response.sendRedirect(request.getContextPath() + "/index.jsp");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String userid = request.getParameter("userid");
        String userpwd = request.getParameter("userpwd");

        UserDao uDao = new UserDao();
        if (uDao.queryByUserNameAndPass(userid, userpwd))
            response.sendRedirect(request.getContextPath() +"sy444/index.jsp");
        else
            response.sendRedirect(request.getContextPath() +"sy444/login.jsp");
    }
}
//UserDao.java
    
public class UserDao {
    //根据用户名和密码查找,如果找到返回true,否则返回false
    public boolean queryByUserNameAndPass(String u_name,String u_pass) {
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement stmt = null;
        try {
            conn = JdbcUtils.getCon();
            // ②创建连接。
            String sql ="SELECT * from user where username=? and password=?";
            // ③创建执行SQL语句的对象。
            stmt = conn.prepareStatement(sql);
            stmt.setString(1,u_name);
            stmt.setString(2,u_pass);
            // ④执行查询数据。
            rs = stmt.executeQuery();
            // ⑤处理查询结果。
            if (rs.next()) {
                return true;
            }
        } catch (SQLException e) { }finally {JdbcUtils.release(stmt, rs, conn);}
        return false;
    }
    public shangping selsectOne(int id) {
        Connection conn = null;ResultSet rs = null;PreparedStatement stmt = null;
        shangping goods = new shangping();
        try{
            conn = JdbcUtils.getCon();
            String sql ="SELECT * from shangping WHERE id = ?";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1,id);
            rs = stmt.executeQuery();
            while(rs.next()) {
                String name = rs.getString("name");
                int price = rs.getInt("price");
                int number = rs.getInt("number");
                String picture = rs.getString("picture");

                goods = new shangping(id,name,price,number,picture);
            }
            return goods;
        } catch (SQLException e) { }finally {JdbcUtils.release(stmt, rs, conn);}
        return null;
    }
    
    public boolean addIt(shangping goods, int Num){
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement stmt = null;
        try{
            conn = JdbcUtils.getCon();
            String sql ="insert into car values(? , ? )";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1,goods.getId());
            stmt.setString(2,goods.getName());

            int ans = stmt.executeUpdate();
            if(ans>0) return true;
            else return false;
            
        } catch (SQLException e) { }finally {JdbcUtils.release(stmt, rs, conn);}
        return false;
    }

    public boolean updateit(int id, int num){
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement stmt = null;

        try{
            conn = JdbcUtils.getCon();
            String sql ="update car set num=? where id=?";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1,num);
            stmt.setInt(2,id);

            int ans = stmt.executeUpdate();
            if(ans>0) {
                return true;
            }else {
                return false;
            }
        } catch (SQLException e) { }finally {JdbcUtils.release(stmt, rs, conn);}
        return false;
    }

    public boolean delit(int id){
        Connection conn = null;ResultSet rs = null;PreparedStatement stmt = null;

        try{
            conn = JdbcUtils.getCon();
            String sql ="delete from car where id=?";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1,id);

            int ans = stmt.executeUpdate();
            if(ans>0) {
                return true;
            }else {
                return false;
            }
        } catch (SQLException e) { }finally {JdbcUtils.release(stmt, rs, conn);}
        return false;
    }
}
//JdbcUtils

public class JdbcUtils {
    // 加载驱动
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) { }
    }
    // 创建连接
    public static Connection getCon() {
        Connection conn = null;
        String url = "jdbc:mysql://localhost:3306/php?useUnicode=true&characterEncoding=UTF-8";
        try {
            conn = DriverManager.getConnection(url, "root", "mysqll");
        } catch (SQLException e) { }
        return conn;
    }

    // 释放资源
    public static void release(Statement st, ResultSet rs, Connection con) {
        try {
            if (rs != null)
                rs.close();
        } catch (SQLException e) { }
        try {
            if (st != null)
                st.close();
        } catch (SQLException e) { }
        try {
            if (con != null)
                con.close();
        } catch (SQLException e) { }

    }
}

分值

填空 10*2

选择 10*2

判断 10*1

简答2*5

程序 1*40

已标记关键词 清除标记
相关推荐
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页