1.如何接受请求的参数值。
什么是请求?
比如: 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文件夹下。
练习获取表单提交的数据!
1.2 接受超链接提交的数据
<%–超链接: 超链接如何传参 使用?key=value&key=value–%>
<a href=”indexDo02.jsp?name=ykq&age=18″>连接</a>
2.乱码如何解决
接受参数的时候设置一下UTF-8的编码。
request.setCharacterEncoding(“utf-8”);
常见的编码:
ISO-8859-1: 国际编码 但是不支持中文。
UTF-8: 万能编码支持英文中文以及繁体中文。—-企业开发都是用UTF-8
GBK: 中文编码.简体中文和繁体中文.
GB2312: 中文编码 但是它支持简体中文。
3.页面跳转
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");
}
%>
登录流程图:
4.jsp+dao整合
我们上面在写登录时,账号和密码的比对都是和固定值对比,实际我们应该和数据库中的账号和密码进行对比。
登录的流程图:
注册流程图
登录与注册(连接数据库):
java代码部分:
package com.zsy.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* @author : zhou
* @date : 17:29 2022/5/10
*/
public class BaseDao {
private String driverName = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/mydb2?serverTimezone=Asia/Shanghai";
private String user = "root";
private String password = "1234";
protected ResultSet rs = null;
protected PreparedStatement ps = null;
protected Connection con = null;
public void getCon() throws Exception{
Class.forName(driverName);
con = DriverManager.getConnection(url,user,password);
}
public void closeAll(){
try{
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(con!=null){
con.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
package com.zsy.dao;
import com.zsy.entiy.User;
/**
* @author : zhou
* @date : 17:29 2022/5/10
*/
public class UserDao extends BaseDao{
public boolean findByNameandPws(String name,String pwd){
try{
getCon();
String sql = "select * from t_user where username=? and password=?";
ps = con.prepareStatement(sql);
ps.setObject(1,name);
ps.setObject(2,pwd);
rs = ps.executeQuery();
while (rs.next()){
return true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
closeAll();
}
return false;
}
public void inserUser(String name,String pwd){
try{
getCon();
String sql = "insert into t_user values(null,?,?)";
ps = con.prepareStatement(sql);
ps.setObject(1,name);
ps.setObject(2,pwd);
ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
closeAll();
}
}
}
package com.zsy.entiy;
/**
* @author : zhou
* @date : 17:27 2022/5/10
*/
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
编写测试类,查看是否有bug
package com.zsy;
import com.zsy.dao.UserDao;
import com.zsy.entiy.User;
import org.junit.Test;
/**
* @author : zhou
* @date : 17:43 2022/5/10
*/
public class TestUser {
UserDao ud = new UserDao();
User user = new User();
@Test
public void testlogin(){
System.out.println(ud.findByNameandPws("张三","1254"));
}
@Test
public void testInsert(){
user.setUsername("李四");
user.setPassword("123456");
ud.inserUser(user.getUsername(), user.getPassword());
}
}
Web部分:
登录实现:
<%@ 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="text" name="pwd" /><br/>
<%--性别:<input type="radio" name="sex" value="男" />男
<input type="radio" name="sex" value="女" />女<br/>
城市:<select name="city">
<option>郑州</option>
<option>周口</option>
<option>南阳</option>
</select><br/>
爱好:<input type="checkbox" name="happy" value="读书"> 读书
<input type="checkbox" name="happy" value="爬山"> 爬山
<input type="checkbox" name="happy" value="游泳"> 游泳<br/>
自我介绍:<textarea name="desc" cols="3" rows="20"></textarea><br/>--%>
<input type="submit" value="登录">
<a href="enroll.jsp"> <input type="button" value="注册"></a>
<%--<a href="loginDo02.jsp?name=zxsy&age=21">超链接</a>--%>
</form>
</body>
</html>
<%@ page import="com.zsy.dao.UserDao" %><%--
Created by IntelliJ IDEA.
User: Z
Date: 2022/5/10
Time: 16:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("pwd");
/*String sex = request.getParameter("sex");
String city = request.getParameter("city");
String[] happies = request.getParameterValues("happy");
String desc = request.getParameter("desc");*/
/*out.print("账户:"+username+"<br/>");
out.print("密码:"+password+"<br/>");
out.print("性别:"+sex+"<br/>");
out.print("城市:"+city+"<br/>");
out.print("爱好:"+ Arrays.toString(happies)+"<br/>");
out.print("自我介绍:"+desc+"<br/>");*/
UserDao ud = new UserDao();
boolean flag = ud.findByNameandPws(username,password);
if(flag){
response.sendRedirect("auscess.jsp");
}else {
response.sendRedirect("login.jsp");
}
注册实现
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<form action="enrollDo.jsp" method="post">
账户:<input type="text" name="username" /><br/>
密码:<input type="text" name="pwd" /><br/>
<input type="submit" value="注册">
</form>
</body>
</html>
<%@ page import="com.zsy.dao.UserDao" %><%--
Created by IntelliJ IDEA.
User: Z
Date: 2022/5/10
Time: 19:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("pwd");
UserDao ud = new UserDao();
ud.inserUser(username,password);
response.sendRedirect("login.jsp");
%>
</body>
</html>
登录成功
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功页面</title>
</head>
<body>
=================登录成功====================
</body>
</html>