0903学习总结

实现编辑功能

1.点击编辑按钮 实现获得 表中的id和获得 name的值
2.更改input里的内容
3.点击按钮就把数据库中的数据更改

1.index.jsp


<body>
    <h1>Hi, JSP!</h1>
<hr>
<a href="add.jsp">新增用户</a>
<%
    String str = "<h2>Hi,Java</h2>";
    out.print(str);
    out.print("<table><thead><tr><th>ID</th><th>NAME</th><th>Action</th></tr></thead><tbody>");
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true", "root", "123456");
    PreparedStatement pst = conn.prepareStatement("SELECT id,name FROM stu");
    ResultSet rs = pst.executeQuery();
    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        out.print("<tr><td>"+id+"</td><td>"+name+"</td><td><a href='javascript:delStu("+id+")'>删除</a>&nbsp;<a href='editPre.jsp?id="+ id +"'>编辑</a></td></tr>");
    }
    rs.close();
    pst.close();
    conn.close();
    out.print("</tbody></table>");
%>
    <script>
        var delStu = function(id) {
            if (confirm("确认要删除ID是" + id + "的数据吗?")) {
                window.location.href = "delStu.jsp?id=" + id;
            }
        }
    </script>
</body>
</html>

2.更改input里的内容
editPre.jsp


<body>
<%
    //第一步:获取请求参数:获取id

    String id = request.getParameter("id");
    String username = request.getParameter("username");

    //第二部:处理业务逻辑:根据ID查询指定记录的数据

    String name ="";
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true", "root", "123456");
    PreparedStatement pst = conn.prepareStatement("SELECT id,name FROM stu WHERE id=?");

    pst.setInt(1,Integer.valueOf(id));
    ResultSet rs = pst.executeQuery();

    while (rs.next()) {

         name = rs.getString("name");

    }
    rs.close();
    pst.close();
    conn.close();
    out.print(name);

    //第三步:渲染页面
%>
    <h1>编辑用户</h1>
    <hr>
    <a href="index.jsp">返回列表</a>
    <form action="editStu.jsp" method="post" onsubmit="return editStu()">
        <input type="text" name="username" value="<%=name %>" />
        <input type="hidden" name="id" value="<%=id %>" />
        <input type="submit" value="提交"/>
    </form>
</body>
<script>
    var editStu= function(){
        if (confirm("确认保存数据吗?")){
            return true ;
        }else{
            return false;
        }
    }
</script>
</html>

3.点击按钮就把数据库中的数据更改
editStu.jsp


<body>
<h1>新增结果</h1>
<hr>
<a href="index.jsp">返回列表</a>
<%
    //获取add.jsp里面input username的值
    String id = request.getParameter("id");
    String username = request.getParameter("username");

    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true", "root", "123456");
    PreparedStatement pst = conn.prepareStatement("UPDATE stu SET name=? WHERE id=?");
    pst.setString(1, username);
    pst.setInt(2, Integer.valueOf(id));
    int rs = pst.executeUpdate();
    pst.close();
    conn.close();

    // jdbc编程
    out.print("<h1>编辑"+rs+"条数据</h1>");  

%>
</body>
</html>

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

get 和post的区别

Get方式:
  将请求的参数名和值转换成字符串,并附加在原来的URL之后,不安全
  传输的数据量较小,一般不能大于2KB;

post方式:
  数量较大;
  请求的参数和值放在HTML的请求头中,安全性较高。
自己写的练习代码:

login.jsp


<body>
    <h1>用户登录</h1> <hr>
        <form name="loginForm" action="doLogin.jsp" method="post">
            <table>
                <tr>
                    <td>用户名:</td>
                    <td><input type="text" name="username" /></td>
                </tr>
                <tr>
                    <td>密码:</td>
                    <td><input type="password" name="password" /></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" name="login" value="登录"/></td>
                </tr>
            </table>    
        </form>
</body>
</html>

doLogin.jsp


<body>
    <h1>登陆成功</h1>
    <br>
</body>
</html>

这里写图片描述
post是:这里写图片描述
这里写图片描述
get是:这里写图片描述

预习

Page 指令
定义页面的流模式和字符编码方式
<%@ page language=”java” contentType=”text/html; charset=UTF-8” pageEncoding=”UTF-8”%>
定义页面是 text/html 的流模式,字符编码是 UTF-8

包含指令
静态包含
<%@include file="head.jsp" %>
<h1>content</h1>
<%@include file="foot.jsp" %>
动态包含
<%
    String str = "HELLO";
%>
<jsp:include page="head.jsp"></jsp:include>
<h1><%=str %>,CONTENT</h1>
<jsp:include page="foot.jsp"></jsp:include>

区别:
在静态引入中,子页面是原封不动的把页面的信息放到了父页面中,父页面把所有页面的页面信息都收集完成后,统一的进行解析,完成页面的输出。这样,如果在不同的页面中定义了相同名称的变量,那么就会产生冲突。
但是在动态引入中,由于每一个页面都是单独的进行解析的。再交给父页面合成生成一个 HTML 页面,每个子页面和父页面中定义的 Scriptlet 是不会产生冲突的

跳转指令

使用 jsp:forward 进行服务器端的页面跳转。
jsp:forward 属于服务器内部的请求跳转,不会在浏览器的地址栏留下任何跳转的痕迹。
jsp:forward 动作指令之后的代码是不会执行的。

总结
地址栏不改变的跳转属于服务器跳转;
地址栏改变的跳转属于客户端跳转;
一般使用服务器端的跳转进行业务逻辑的处理,完成目标视图的输出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值