JavaWeb接受请求的参数值与乱码问题、页面跳转、jsp+dao完成相应的业务需求。

  • Post author:
  • Post category:java


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>



版权声明:本文为qq_44189274原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。