会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132837个问题

我这里没有显示form表单页面,直接在浏览器显示null,是哪里出问题了

package com.study;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class GetRequestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("UserName:" + username + "<br/>");
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="getInfo.do" method="post">
        用户名:<input type="text" name="username"/><br/>
        <input type="submit" value="ok"/>
    </form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>demoServlet</servlet-name>
        <servlet-class>com.study.demoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demoServlet</servlet-name>
        <url-pattern>/demo.do</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>GetRequestServlet</servlet-name>
        <servlet-class>com.study.GetRequestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetRequestServlet</servlet-name>
        <url-pattern>/getInfo.do</url-pattern>
    </servlet-mapping>
</web-app>

屏幕截图 2021-07-29 153032.png

JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 33797楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 33798楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 33800楼
Python 全系列/第二阶段:Python 深入与提高/坦克大战 33801楼
JAVA 全系列/第十九阶段:Spring Cloud微服务技术栈/Spring Cloud(旧) 33802楼

视频和讲义中如下两个问题,我觉的好像不对:


查询名字中含有两个 o 的雇员的名字与薪水。

select last_name,salary from employees where last_name REGEXP 'o.{2}'

查询雇员名字中包含 1 个或者两个 o 的雇员姓名与薪水。

select last_name,salary from employees where last_name REGEXP 'o.{1,2}'


一、问题分析:

select last_name,salary from employees where last_name REGEXP 'o.{2}'

我认为这条语句表示含有1个'0',2个或2个以上'.',也就是含有1个以上字母'o',最终返回结果:字符串出现第一个'o'的后面字符长度在2个以上,即满足要求,那么oldLu 也可以被选中。



二、问题验证:

mysql> select * from employees;
+-------------+-----------+-------------+---------+
| employee_id | last_name | email       | dept_id |
+-------------+-----------+-------------+---------+
|           1 | asb       | gjj@q.com   | NULL    |
|           2 | adal      | aa@da.com   | NULL    |
|           3 | huli      | dfd@qe.3com | NULL    |
|           4 | fox       | gdfx@gr     | NULL    |
|           5 | cagayauj  | zc          | NULL    |
|           6 | oldLu     | bm          | NULL    |
|           7 | oldoLu    | bj          | NULL    |
|           8 | oldoLou   | sxt         | NULL    |
+-------------+-----------+-------------+---------+
8 rows in set
mysql> select * from employees where last_name regexp'o.{1,3}';
+-------------+-----------+---------+---------+
| employee_id | last_name | email   | dept_id |
+-------------+-----------+---------+---------+
|           4 | fox       | gdfx@gr | NULL    |
|           6 | oldLu     | bm      | NULL    |
|           7 | oldoLu    | bj      | NULL    |
|           8 | oldoLou   | sxt     | NULL    |
+-------------+-----------+---------+---------+
4 rows in set
mysql> select * from employees where last_name regexp'o.{2,3}';
+-------------+-----------+-------+---------+
| employee_id | last_name | email | dept_id |
+-------------+-----------+-------+---------+
|           6 | oldLu     | bm    | NULL    |
|           7 | oldoLu    | bj    | NULL    |
|           8 | oldoLou   | sxt   | NULL    |
+-------------+-----------+-------+---------+
3 rows in set
mysql> select * from employees where last_name regexp'o.{6,8}';
+-------------+-----------+-------+---------+
| employee_id | last_name | email | dept_id |
+-------------+-----------+-------+---------+
|           8 | oldoLou   | sxt   | NULL    |
+-------------+-----------+-------+---------+
1 row in set
mysql>

如上代码,

select * from employees where last_name regexp'o.{6,8}';

只选中 oldoLou,是因为这个字符串总长为7,出去1个o,还有6个字符长度,不选中oldoLu,是因为oldoLu除去1个o只剩5个字符了不满足 '.{6,8}'。

select * from employees where last_name regexp'o.{2,3}';

选中 oldLu 而不选中 fox,也是因为 fox中的 o后面只有1个字符,不满足'.{2,3}'。



三、疑问(我没找到解决方案)

针对如上的 employees 这个table,我要查询 last_name 有 2个o,也就是只选中“oldoLu”,怎么搞定呢?

同理如何搞定只有1个 o的,即只选中 “fox”和 “oldLu”。

再搞定有 2~3个o的,即只返回  "oldoLu"和 "oldoLou"。


JAVA 全系列/第三阶段:数据库编程/MySQL数据库 33804楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 33808楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO流技术 33810楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637