HttpServletRequest req和前端的关系,req.getParameter详细解释,req.getParameter和前端的关系

HttpServletRequest 对象在后端和前端之间起到了桥梁的作用,它包含了来自客户端的所有请求信息。通过 HttpServletRequest 对象,后端可以获取前端发送的请求参数、请求头、请求方法等信息,并根据这些信息进行相应的处理。以下是对 HttpServletRequest 对象与前端关系的详细解释:

前端请求

前端通常通过 HTML 表单、JavaScript AJAX 请求等方式向后端发送请求。以下是几种常见的前端请求方式:

1. HTML 表单
html 复制代码
<form action="/typetable" method="get">
    <label for="name">搜索:</label>
    <input type="text" id="name" name="name">
    <button type="submit">搜索</button>
</form>

在这个表单中,用户输入搜索关键词并点击"搜索"按钮,表单会以 GET 方法提交到 /typetable 路径,请求参数 name 会被包含在 URL 中。

2. JavaScript AJAX 请求
javascript 复制代码
fetch('/typetable', {
    method: 'GET',
    params: {
        name: 'example'
    }
})
.then(response => response.json())
.then(data => {
    console.log(data);
});

在这个 AJAX 请求中,JavaScript 通过 fetch 函数发送一个 GET 请求到 /typetable 路径,并携带请求参数 name

后端处理

在后端,HttpServletRequest 对象用于接收和处理前端发送的请求。以下是 HttpServletRequest 对象的主要功能:

1. 获取请求参数
java 复制代码
String name = req.getParameter("name");
  • req.getParameter("name"):获取请求参数 name 的值。
  • 如果请求是通过表单提交的,name 参数会出现在 URL 的查询字符串中,例如 /typetable?name=example
  • 如果请求是通过 AJAX 发送的,name 参数也会作为查询字符串的一部分。
2. 获取请求头
java 复制代码
String userAgent = req.getHeader("User-Agent");
  • req.getHeader("User-Agent"):获取请求头中 User-Agent 的值,表示客户端的浏览器信息。
3. 获取请求方法
java 复制代码
String method = req.getMethod();
  • req.getMethod():获取请求的方法,例如 GETPOSTPUTDELETE 等。
4. 获取请求 URI 和 URL
java 复制代码
String requestURI = req.getRequestURI();
StringBuffer requestURL = req.getRequestURL();
  • req.getRequestURI():获取请求的 URI,例如 /typetable
  • req.getRequestURL():获取请求的完整 URL,例如 http://example.com/typetable
5. 设置请求属性
java 复制代码
req.setAttribute("typeList", typeList);
  • req.setAttribute("typeList", typeList):将 typeList 设置为请求属性,属性名称为 "typeList"
  • 这样,在视图中可以通过 ${typeList} 访问这些数据。

示例代码解释

以下是你提供的代码段的详细解释:

java 复制代码
@RequestMapping("typetable")
public String typeTable(HttpServletRequest req) {
    if (!StringUtils.isEmpty(req.getParameter("name"))) {
        String name = "%" + req.getParameter("name") + "%";
        req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
    } else {
        Iterable<SystemTypeList> typeList = typeDao.findAll();
        req.setAttribute("typeList", typeList);
    }
    return "systemcontrol/typetable";
}
  1. 方法声明

    java 复制代码
    @RequestMapping("typetable")
    public String typeTable(HttpServletRequest req) {
    • @RequestMapping("typetable"):将该方法映射到 /typetable 路径。
    • public String typeTable(HttpServletRequest req):方法返回一个字符串,表示视图的名称。HttpServletRequest req 参数表示当前的 HTTP 请求对象。
  2. 检查请求参数

    java 复制代码
    if (!StringUtils.isEmpty(req.getParameter("name"))) {
    • req.getParameter("name"):获取请求参数 name 的值。
    • StringUtils.isEmpty:检查字符串是否为空或仅包含空白字符。
    • 如果 name 参数存在且不为空,则进入条件分支。
  3. 处理模糊查询

    java 复制代码
    String name = "%" + req.getParameter("name") + "%";
    req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
    • String name = "%" + req.getParameter("name") + "%";:将 name 参数值前后加上 %,构建模糊查询条件。
    • typeDao.findByTypeNameLikeOrTypeModelLike(name, name):调用 typeDaofindByTypeNameLikeOrTypeModelLike 方法,根据类型名称或类型模型进行模糊查询。
    • req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));:将查询结果设置为请求属性,属性名称为 "typeList"
  4. 处理全量查询

    java 复制代码
    else {
        Iterable<SystemTypeList> typeList = typeDao.findAll();
        req.setAttribute("typeList", typeList);
    }
    • 如果 name 参数不存在或为空,则进入 else 分支。
    • typeDao.findAll():调用 typeDaofindAll 方法,查询所有类型的记录。
    • req.setAttribute("typeList", typeList);:将查询结果设置为请求属性,属性名称为 "typeList"
  5. 返回视图名称

    java 复制代码
    return "systemcontrol/typetable";
    • 返回字符串 "systemcontrol/typetable",表示视图的名称。
    • Spring MVC 会根据这个名称找到对应的视图文件并渲染。

视图文件中的使用

在视图文件中,可以通过 JSTL 标签库(JavaServer Pages Standard Tag Library)来遍历 typeList 并显示数据。假设视图文件是 systemcontrol/typetable.jsp,它可能会包含如下内容:

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>类型表格</title>
</head>
<body>
<h1>类型表格</h1>
<form action="typetable" method="get">
    <label for="name">搜索:</label>
    <input type="text" id="name" name="name">
    <button type="submit">搜索</button>
</form>
<table>
    <tr>
        <th>ID</th>
        <th>类型名称</th>
        <th>类型模型</th>
        <th>操作</th>
    </tr>
    <c:forEach items="${typeList}" var="type">
        <tr>
            <td>${type.typeId}</td>
            <td>${type.typeName}</td>
            <td>${type.typeModel}</td>
            <td>
                <a href="typeedit?typeid=${type.typeId}">编辑</a>
                <a href="deletetype?id=${type.typeId}">删除</a>
            </td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

在这个视图文件中,通过 ${typeList} 访问从控制器传递过来的类型数据,并显示在一个表格中。用户还可以通过表单提交 name 参数进行模糊查询。

总结

HttpServletRequest 对象在后端和前端之间起到了桥梁的作用,它包含了来自客户端的所有请求信息。通过 HttpServletRequest 对象,后端可以获取前端发送的请求参数、请求头、请求方法等信息,并根据这些信息进行相应的处理。

String name = "%" + req.getParameter("name") + "%"; req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));

这两行代码用于处理前端传来的搜索请求参数,并进行模糊查询。以下是详细的解释:

代码片段

java 复制代码
String name = "%" + req.getParameter("name") + "%";
req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));

详细解释

1. 构建模糊查询条件
java 复制代码
String name = "%" + req.getParameter("name") + "%";
  • 获取请求参数req.getParameter("name")

    • req.getParameter("name"):从 HttpServletRequest 对象中获取名为 name 的请求参数值。
    • 例如,如果前端表单提交的 URL 是 /typetable?name=example,那么 req.getParameter("name") 会返回 "example"
  • 构建模糊查询条件"%" + req.getParameter("name") + "%"

    • name 参数值的前后各加一个 % 符号,构建模糊查询条件。
    • % 是 SQL 中的通配符,表示任意字符序列(包括空字符序列)。
    • 例如,如果 name 参数值是 "example",那么 name 变量的值将是 "%example%"
2. 执行模糊查询
java 复制代码
req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
  • 调用 DAO 方法typeDao.findByTypeNameLikeOrTypeModelLike(name, name)

    • typeDao 是一个 DAO(Data Access Object)对象,用于与数据库交互。

    • findByTypeNameLikeOrTypeModelLiketypeDao 中定义的方法,用于根据类型名称或类型模型进行模糊查询。

    • 方法签名可能类似于:

      java 复制代码
      List<SystemTypeList> findByTypeNameLikeOrTypeModelLike(String typeName, String typeModel);
    • 该方法接受两个参数,分别表示类型名称和类型模型的模糊查询条件。

    • 由于我们希望同时在类型名称和类型模型中进行模糊匹配,所以传递相同的 name 参数。

  • 设置请求属性req.setAttribute("typeList", ...)

    • req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name)):将查询结果设置为请求属性,属性名称为 "typeList"
    • 这样,在视图中可以通过 ${typeList} 访问这些数据。

示例 DAO 方法

假设 SystemTypeList 是一个实体类,表示系统类型列表中的一个条目,DAO 方法可能如下实现:

java 复制代码
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface SystemTypeListDao extends JpaRepository<SystemTypeList, Long> {
    List<SystemTypeList> findByTypeNameLikeOrTypeModelLike(String typeName, String typeModel);
}

视图文件中的使用

在视图文件中,可以通过 JSTL 标签库(JavaServer Pages Standard Tag Library)来遍历 typeList 并显示数据。假设视图文件是 systemcontrol/typetable.jsp,它可能会包含如下内容:

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>类型表格</title>
</head>
<body>
<h1>类型表格</h1>
<form action="typetable" method="get">
    <label for="name">搜索:</label>
    <input type="text" id="name" name="name">
    <button type="submit">搜索</button>
</form>
<table>
    <tr>
        <th>ID</th>
        <th>类型名称</th>
        <th>类型模型</th>
        <th>操作</th>
    </tr>
    <c:forEach items="${typeList}" var="type">
        <tr>
            <td>${type.typeId}</td>
            <td>${type.typeName}</td>
            <td>${type.typeModel}</td>
            <td>
                <a href="typeedit?typeid=${type.typeId}">编辑</a>
                <a href="deletetype?id=${type.typeId}">删除</a>
            </td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

在这个视图文件中,通过 ${typeList} 访问从控制器传递过来的类型数据,并显示在一个表格中。用户还可以通过表单提交 name 参数进行模糊查询。

总结

这两行代码的主要功能是:

  1. 构建模糊查询条件 :从请求参数中获取 name 值,并在其前后加上 % 符号,构建模糊查询条件。
  2. 执行模糊查询:调用 DAO 方法进行模糊查询,并将查询结果设置为请求属性,以便在视图中使用。

req.getParameter详细解释

req.getParameterHttpServletRequest 接口中用于获取请求参数的方法。通过这个方法,可以从客户端发送的请求中提取出特定的参数值。以下是对 req.getParameter 方法的详细解释,以及它在你的代码中的具体应用。

req.getParameter 方法

定义

getParameter 方法定义在 HttpServletRequest 接口中,用于获取请求参数的值。

java 复制代码
public String getParameter(String name);
参数
  • name:参数的名称,类型为 String
返回值
  • 返回类型为 String,表示请求参数的值。
  • 如果请求中没有该参数,或者参数值为空,则返回 null

使用场景

getParameter 方法通常用于处理表单提交、URL 查询字符串、AJAX 请求等场景中传递的参数。

示例代码解释

以下是你提供的代码片段的详细解释:

java 复制代码
String name = "%" + req.getParameter("name") + "%";
req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
1. 获取请求参数
java 复制代码
String name = req.getParameter("name");
  • 获取请求参数req.getParameter("name")
    • reqHttpServletRequest 对象,表示当前的 HTTP 请求。
    • getParameter("name") 方法用于获取名为 name 的请求参数的值。
    • 例如,如果前端表单提交的 URL 是 /typetable?name=example,那么 req.getParameter("name") 会返回 "example"
    • 如果请求中没有 name 参数,或者参数值为空,则返回 null
2. 构建模糊查询条件
java 复制代码
String name = "%" + req.getParameter("name") + "%";
  • 构建模糊查询条件"%" + req.getParameter("name") + "%"
    • name 参数值的前后各加一个 % 符号,构建模糊查询条件。
    • % 是 SQL 中的通配符,表示任意字符序列(包括空字符序列)。
    • 例如,如果 name 参数值是 "example",那么 name 变量的值将是 "%example%"
3. 执行模糊查询
java 复制代码
req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
  • 调用 DAO 方法typeDao.findByTypeNameLikeOrTypeModelLike(name, name)

    • typeDao 是一个 DAO(Data Access Object)对象,用于与数据库交互。

    • findByTypeNameLikeOrTypeModelLiketypeDao 中定义的方法,用于根据类型名称或类型模型进行模糊查询。

    • 方法签名可能类似于:

      java 复制代码
      List<SystemTypeList> findByTypeNameLikeOrTypeModelLike(String typeName, String typeModel);
    • 该方法接受两个参数,分别表示类型名称和类型模型的模糊查询条件。

    • 由于我们希望同时在类型名称和类型模型中进行模糊匹配,所以传递相同的 name 参数。

  • 设置请求属性req.setAttribute("typeList", ...)

    • req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name)):将查询结果设置为请求属性,属性名称为 "typeList"
    • 这样,在视图中可以通过 ${typeList} 访问这些数据。

示例前端请求

HTML 表单
html 复制代码
<form action="/typetable" method="get">
    <label for="name">搜索:</label>
    <input type="text" id="name" name="name">
    <button type="submit">搜索</button>
</form>

在这个表单中,用户输入搜索关键词并点击"搜索"按钮,表单会以 GET 方法提交到 /typetable 路径,请求参数 name 会被包含在 URL 中,例如 /typetable?name=example

JavaScript AJAX 请求
javascript 复制代码
fetch('/typetable', {
    method: 'GET',
    params: {
        name: 'example'
    }
})
.then(response => response.json())
.then(data => {
    console.log(data);
});

在这个 AJAX 请求中,JavaScript 通过 fetch 函数发送一个 GET 请求到 /typetable 路径,并携带请求参数 name,例如 /typetable?name=example

总结

req.getParameter 方法用于从 HttpServletRequest 对象中获取请求参数的值。在你的代码中,req.getParameter("name") 用于获取前端传递的 name 参数值,并构建模糊查询条件,然后调用 DAO 方法进行模糊查询,最后将查询结果设置为请求属性,以便在视图中使用。

req.getParameter和前端的关系

req.getParameter 方法在后端用于获取前端发送的请求参数。通过这个方法,后端可以读取用户在前端页面中输入的数据或其他传递的信息。以下是 req.getParameter 方法与前端关系的详细解释,包括常见的前端请求方式和后端处理过程。

前端请求

前端通常通过 HTML 表单、JavaScript AJAX 请求等方式向后端发送请求。以下是几种常见的前端请求方式:

1. HTML 表单
html 复制代码
<form action="/typetable" method="get">
    <label for="name">搜索:</label>
    <input type="text" id="name" name="name">
    <button type="submit">搜索</button>
</form>

在这个表单中,用户输入搜索关键词并点击"搜索"按钮,表单会以 GET 方法提交到 /typetable 路径,请求参数 name 会被包含在 URL 中,例如 /typetable?name=example

2. JavaScript AJAX 请求
javascript 复制代码
fetch('/typetable', {
    method: 'GET',
    params: {
        name: 'example'
    }
})
.then(response => response.json())
.then(data => {
    console.log(data);
});

在这个 AJAX 请求中,JavaScript 通过 fetch 函数发送一个 GET 请求到 /typetable 路径,并携带请求参数 name,例如 /typetable?name=example

后端处理

在后端,HttpServletRequest 对象用于接收和处理前端发送的请求。req.getParameter 方法用于从请求中获取特定的参数值。

示例代码

以下是你提供的代码片段的详细解释:

java 复制代码
@RequestMapping("typetable")
public String typeTable(HttpServletRequest req) {
    if (!StringUtils.isEmpty(req.getParameter("name"))) {
        String name = "%" + req.getParameter("name") + "%";
        req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
    } else {
        Iterable<SystemTypeList> typeList = typeDao.findAll();
        req.setAttribute("typeList", typeList);
    }
    return "systemcontrol/typetable";
}

详细解释

1. 获取请求参数
java 复制代码
String name = req.getParameter("name");
  • 获取请求参数req.getParameter("name")
    • reqHttpServletRequest 对象,表示当前的 HTTP 请求。
    • getParameter("name") 方法用于获取名为 name 的请求参数的值。
    • 例如,如果前端表单提交的 URL 是 /typetable?name=example,那么 req.getParameter("name") 会返回 "example"
    • 如果请求中没有 name 参数,或者参数值为空,则返回 null
2. 检查参数是否为空
java 复制代码
if (!StringUtils.isEmpty(req.getParameter("name"))) {
  • 条件检查!StringUtils.isEmpty(req.getParameter("name"))
    • StringUtils.isEmpty 是一个工具方法,用于检查字符串是否为空或仅包含空白字符。
    • 如果 name 参数存在且不为空,则进入条件分支。
3. 构建模糊查询条件
java 复制代码
String name = "%" + req.getParameter("name") + "%";
  • 构建模糊查询条件"%" + req.getParameter("name") + "%"
    • name 参数值的前后各加一个 % 符号,构建模糊查询条件。
    • % 是 SQL 中的通配符,表示任意字符序列(包括空字符序列)。
    • 例如,如果 name 参数值是 "example",那么 name 变量的值将是 "%example%"
4. 执行模糊查询
java 复制代码
req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name));
  • 调用 DAO 方法typeDao.findByTypeNameLikeOrTypeModelLike(name, name)

    • typeDao 是一个 DAO(Data Access Object)对象,用于与数据库交互。

    • findByTypeNameLikeOrTypeModelLiketypeDao 中定义的方法,用于根据类型名称或类型模型进行模糊查询。

    • 方法签名可能类似于:

      java 复制代码
      List<SystemTypeList> findByTypeNameLikeOrTypeModelLike(String typeName, String typeModel);
    • 该方法接受两个参数,分别表示类型名称和类型模型的模糊查询条件。

    • 由于我们希望同时在类型名称和类型模型中进行模糊匹配,所以传递相同的 name 参数。

  • 设置请求属性req.setAttribute("typeList", ...)

    • req.setAttribute("typeList", typeDao.findByTypeNameLikeOrTypeModelLike(name, name)):将查询结果设置为请求属性,属性名称为 "typeList"
    • 这样,在视图中可以通过 ${typeList} 访问这些数据。
5. 处理全量查询
java 复制代码
else {
    Iterable<SystemTypeList> typeList = typeDao.findAll();
    req.setAttribute("typeList", typeList);
}
  • 条件不满足时 :如果 name 参数不存在或为空,则进入 else 分支。
  • 查询所有数据typeDao.findAll():调用 typeDaofindAll 方法,查询所有类型的记录。
  • 设置请求属性req.setAttribute("typeList", typeList);:将查询结果设置为请求属性,属性名称为 "typeList",以便在视图中使用。
6. 返回视图名称
java 复制代码
return "systemcontrol/typetable";
  • 返回值"systemcontrol/typetable":这是一个字符串,表示视图的名称。
  • 视图渲染:Spring MVC 会根据这个名称找到对应的视图文件并渲染。

视图文件中的使用

在视图文件中,可以通过 JSTL 标签库(JavaServer Pages Standard Tag Library)来遍历 typeList 并显示数据。假设视图文件是 systemcontrol/typetable.jsp,它可能会包含如下内容:

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>类型表格</title>
</head>
<body>
<h1>类型表格</h1>
<form action="typetable" method="get">
    <label for="name">搜索:</label>
    <input type="text" id="name" name="name">
    <button type="submit">搜索</button>
</form>
<table>
    <tr>
        <th>ID</th>
        <th>类型名称</th>
        <th>类型模型</th>
        <th>操作</th>
    </tr>
    <c:forEach items="${typeList}" var="type">
        <tr>
            <td>${type.typeId}</td>
            <td>${type.typeName}</td>
            <td>${type.typeModel}</td>
            <td>
                <a href="typeedit?typeid=${type.typeId}">编辑</a>
                <a href="deletetype?id=${type.typeId}">删除</a>
            </td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

在这个视图文件中,通过 ${typeList} 访问从控制器传递过来的类型数据,并显示在一个表格中。用户还可以通过表单提交 name 参数进行模糊查询。

总结

req.getParameter 方法用于从 HttpServletRequest 对象中获取前端发送的请求参数值。在你的代码中,req.getParameter("name") 用于获取前端传递的 name 参数值,并构建模糊查询条件,然后调用 DAO 方法进行模糊查询,最后将查询结果设置为请求属性,以便在视图中使用。

相关推荐
retun_true18 分钟前
Element UI 打包探索【2】
前端·javascript·node.js
王将近23 分钟前
Cesium实现3D热力图
前端·cesium
沉默璇年30 分钟前
react中的useCallback 有什么作用?
前端·react.js·前端框架
爱学习的执念31 分钟前
如何使用Jest测试你的React组件
前端·react.js·前端框架
少年姜太公34 分钟前
从0开始完全掌握JS中的原型
前端·javascript·程序员
乐容37 分钟前
react 中解决 类型“never”上不存在属性“value”。
前端·react.js·前端框架
木子七1 小时前
vue2-路由Router
前端·vue
知野小兔1 小时前
【Angular】eventDispatcher详解
前端·javascript·angular.js
苦逼的猿宝1 小时前
Echarts中柱状图完成横向布局
前端·javascript·echarts
禾戊之昂2 小时前
【Electron学习笔记(一)】Electron基本介绍和环境搭建
前端·javascript·electron·node.js