三、JavaWeb动态网页基础(2)

一、如何接受请求的参数值

        什么是请求? 比如: form表单提交action请求路径。 比如: 超链接携带请求参数跳转到其他页面。

 从一个地址跳转到另一个地址,再另一个地址获取请求的参数值。

  <body>
     <%--表单携带请求参数
            action:表示表单提交的路径。
            method:表示表单的提交方式。get和post
     --%>
     <form action="indexDo.jsp"  method="post">
       账号: <input type="text" name="uname"/><br>
       密码: <input type="text" name="pwd"/><br>
       <input type="submit" value="注册"/>
     </form>
  </body>

思考: 从index跳转到indexDo页面,我们如何从indexDo获取表单提交的数据呢?

 接受表单其他元素的参数:

<form action="indexDo.jsp" method="post">
    账号: <input type="text" name="uname"/><br>
    密码: <input type="text" name="pwd"/><br>
    性别:<input type="radio" name="sex" value="M"/>男
    <input type="radio" name="sex" value="F"/>女<br>
    国籍:
    <select name="country">
         <option value="c">chinese</option>
         <option value="u">USA</option>
         <option value="j">Japanese</option>
         <option value="e">English</option>
    </select><br>
    爱好: <input type="checkbox" name="hobby" value="swing"/>swing
    <input type="checkbox" name="hobby" value="reading"/>reading
    <input type="checkbox" name="hobby" value="pashan"/>pashan <br>
    描述: <textarea name="desc" rows="3" cols="20"></textarea><br>
    <input type="submit" value="注册"/>
</form>
<%
    //request属于jsp中的内置对象,无需自己创建该对象。
    String name = request.getParameter("uname");//获取请求的参数值。uname必须和表单的输入的名称一致。
    String pwd = request.getParameter("pwd"); //接受到表单提交的账号和密码了。
    String sex = request.getParameter("sex");
    String country = request.getParameter("country");
    //String hobby = request.getParameter("hobby"); //多选按钮需要获取所有被选中的值。
    String[] hobbies = request.getParameterValues("hobby");
    String desc = request.getParameter("desc");

    out.print("账号===="+name+"<br>");
    out.print("密码===="+pwd+"<br>");
    out.print("性别===="+sex+"<br>");
    out.print("国籍===="+country+"<br>");
    out.print("爱好===="+ Arrays.toString(hobbies)+"<br>");
    out.print("描述===="+desc+"<br>");
%>

注意: 如果是单选按钮和复选按钮必须设置属性value。 如果获取的是多个值,那么必须使用request.getParameterValues(""); 单个值直接使用request.getParameter("")

先把: jsp-api.jar和servlet-api.jar放入WEB-INF/lib文件夹下。

二、接受超链接提交的数据

<%--超链接: 超链接如何传参 使用?key=value&key=value--%>
<a href="indexDo02.jsp?name=ykq&age=18">连接</a>

接受参数的时候设置一下UTF-8的编码。

request.setCharacterEncoding("utf-8");

 常见的编码:
ISO-8859-1: 国际编码 但是不支持中文。
UTF-8: 万能编码支持英文中文以及繁体中文。----企业开发都是用UTF-8
GBK: 中文编码.简体中文和繁体中文.
GB2312: 中文编码 但是它支持简体中文。

三、页面跳转

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
<form action="loginDo.jsp" method="post">
    账号:<input type="text" name="username"/><br>
    密码:<input type="password" name="pwd"/><br>
    <input type="submit" value="登录"/>
    <input type="button" value="注册"/>
</form>
</body>
</html>

loginDo.jsp-------接受请求的参数并进行相应的业务处理。跳转到相应的页面

<%
    //编码的设置
    request.setCharacterEncoding("utf-8");
    //接受账号和密码
    String username = request.getParameter("username");
    String pwd = request.getParameter("pwd");
    //业务处理: 判断你的账号和密码是否正确。--先固定判断  未来我们应该和数据库进行比对。
    if("admin".equals(username) && "123456".equals(pwd)){
        //out.print("登录成功"); //跳转到成功页面
        response.sendRedirect("success.jsp");//重定向到指定页面
    }else{
        //out.print("登录失败"); //跳转到登录页面
        response.sendRedirect("login.jsp");
    }
%>

登录流程图:

四、jsp+dao整合

我们上面再写登录时,账号和密码的比对都是和固定值对比,实际我们应该和数据库中的账号和密码进行对比。

登录的流程图: 

 个人比较推荐的写法步骤:(针对登录操作)

  1. 先创建Project工程
  2. 工程添WebApplication。在工程文件夹处右键点击Add Framework Support,再点击Web Application(4.0) 点击Ok
  3. 在Web->WEB-INF文件夹下建立新的文件夹名为lib(必须叫lib)。
  4. 在lib文件夹中加入jar包(jar包如下图所示)
  5. 将其解压(加入目录)
  6. 在src处写JDBC文件:entity包下的实体类(类名同表名,属性同列名,getset方法,toString方法),dao包下的BaseDao 和 操作dao。
  7. 写好dao后可以对其进行测试,以检验写的操作类是否可以实现功能。
  8. 书写login.jsp,acttion指向loginDo.jsp(处理页面)。loginDo.jsp和success.jsp。
  9. 添加TomCat服务器.

以上便是jsp+dao整合实现登录功能的步骤。

据此我们也可以尝试着写一下其他的功能,账号密码的例如增删改查。原理大致相同。

写之前要先想好流程图是什么样的,再去写。大家在尝试实现注册功能时可以用如下流程图去书写:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值