一、如何接受请求的参数值
什么是请求? 比如: 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整合
我们上面再写登录时,账号和密码的比对都是和固定值对比,实际我们应该和数据库中的账号和密码进行对比。
登录的流程图:
个人比较推荐的写法步骤:(针对登录操作)
- 先创建Project工程
- 工程添WebApplication。在工程文件夹处右键点击Add Framework Support,再点击Web Application(4.0) 点击Ok
- 在Web->WEB-INF文件夹下建立新的文件夹名为lib(必须叫lib)。
- 在lib文件夹中加入jar包(jar包如下图所示)
- 将其解压(加入目录)
- 在src处写JDBC文件:entity包下的实体类(类名同表名,属性同列名,getset方法,toString方法),dao包下的BaseDao 和 操作dao。
- 写好dao后可以对其进行测试,以检验写的操作类是否可以实现功能。
- 书写login.jsp,acttion指向loginDo.jsp(处理页面)。loginDo.jsp和success.jsp。
- 添加TomCat服务器.
以上便是jsp+dao整合实现登录功能的步骤。
据此我们也可以尝试着写一下其他的功能,账号密码的例如增删改查。原理大致相同。
写之前要先想好流程图是什么样的,再去写。大家在尝试实现注册功能时可以用如下流程图去书写: