javaWeb_03

11 篇文章 0 订阅
这篇博客介绍了如何使用JavaWeb实现用户注册功能,包括注册页面的HTML代码,Servlet中处理注册逻辑的部分,以及如何通过触发器和序列在Oracle数据库中实现标识列自动递增的课后作业。
摘要由CSDN通过智能技术生成

一,课堂代码

1,注册页面

    <h2>注册页面</h2>
    <form action="dologin.jsp" method="post">
        id:<input type="text" name="iid"><br>
        用户名:<input type="text" name="iname"><br>
        密码:<input type="password" name="ipwd"><br>
        性别:<input type="radio" name="isex" value="男">男
              <input type="radio" name="isex" value="女">女<br>
        爱好:<input type="checkbox" name="ihobby" value="打张牛逼">打张牛逼
        <input type="checkbox" name="ihobby" value="打游戏">打游戏
        <input type="checkbox" name="ihobby" value="打卡">打卡<br>
        地址:<select name="iaddress">
            <option value="湖南省">湖南省</option>
            <option value="湖北省">湖北省</option>
            <option value="海南省">海南省</option>
        </select><br>
        备注:<textarea rows="10" cols="15" name="ibak"></textarea><br>
        <input type="submit" value="注册">
        <input type="reset" value="清空">
    </form>

</body>
</html>

2,纯业务逻辑

<%
    //设置编码方式
    request.setCharacterEncoding("utf-8");
    //接收表单的值:id 用户名 密码  根据name值取value值 
    String id=request.getParameter("iid");
    String name=request.getParameter("iname");
    String pwd=request.getParameter("ipwd");
    //取表单其他值
    //取性别 地址 备注 
    String sex=request.getParameter("isex");
    String address=request.getParameter("iaddress");
    String bak=request.getParameter("ibak");
    //取爱好 多选
    String[] ss=request.getParameterValues("ihobby");
    String hobby="";//做拼接 
    //循环遍历
    for(String s:ss){
        hobby+=s+",";//拼接 用逗号隔开
    }
    //out.print(hobby);
    
    //jdbc连接Oracle 把这个用户信息保存到数据库中
    //作业:用触发器+序列实现标识列效果 sid
    
    //两个字符串
    String URL="jdbc:oracle:thin:@localhost:1521:orcl";
    String CNAME="oracle.jdbc.driver.OracleDriver"; 
    //OracleDriver
    
    //加载驱动
    Class.forName(CNAME);
    
    //创建连接
    Connection con=DriverManager.getConnection(URL, "scott", "tiger");
    
    //定义sql语句
    String sql="insert into tb_0328(sid,sname,spwd,ssex,shobby,saddress,sbak) values(?,?,?,?,?,?,?)";
    
    //获得执行对象
    PreparedStatement ps=con.prepareStatement(sql);
    
    //给占位符赋值
    ps.setInt(1, Integer.parseInt(id));//String-->int
    ps.setString(2, name);
    ps.setString(3, pwd);
    ps.setString(4, sex);
    ps.setString(5, hobby);
    ps.setString(6, address);
    ps.setString(7, bak);
    
    //开始执行
    //---增删改  影响行数 int
    //---查         结果集 集合 
    int n=ps.executeUpdate();//获取影响行数
    
    //关闭资源 
    //---增删改  2个
    //---查         3个 rs 
    if(con!=null&&!con.isClosed()){//不为空且没有关 
        con.close();
    }
    if(ps!=null){
        ps.close();
    }
    
    //判断
    if(n>0){
        response.sendRedirect("success.jsp");
    }
    else{
        out.print("插入失败");
    }
    
    //假设我的数据表里面已经存在用户admin 密码为123456
    //if("admin".equals(name)&&"123456".equals(pwd)){
        //说明登录成功 跳转到success.jsp
        //页面跳转两种方式
        //1.重定向response
        //能够将页面跳转 地址栏发生了改变 但是不能将值传递到下一个界面  
        //能够跳转到任意资源 在客户端发挥作用
        //response.sendRedirect("http://www.baidu.com");
        
        //2.转发request
        //能够将页面跳转 能够将值传递下一个界面 但是地址栏不发生改变而是停留在了之前的界面
        //只能够转发到当前的项目内资源 在服务器端发挥作用 
        //request.getRequestDispatcher("http://www.baidu.com").forward(request, response);
    //}
    //else{
        //说明登录失败 提示用户并返回登录界面  js的跳转属于哪一种?属于重定向 因为地址栏发生了改变 login->dologin->login 
        //out.print("<script>alert('用户名或者密码有误');location.href='login.jsp';</script>");
    //}
    //out.print(name+"  "+pwd);
%>

3,插入成功跳转界面

<title>Insert title here</title>
</head>
<body>
    欢迎<%=request.getParameter("iname")%>来到王者荣耀,敌军还有5秒到达战场!
</body>
</html>

二 触发器&序列创造标识列自动递增(课后作业)

create sequence ss_0329
create or replace trigger t_0329
before insert
on tb_0329_1
for each row
  begin
    :new.nid:=ss_0329.nextval;
  end;
  
  
  create sequence ss_0329_2
create or replace trigger t_0329_2
before insert
on tb_0329_2
for each row
  begin
    :new.tid:=ss_0329_2.nextval;
  end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值