• Java EE基础练习题(上)


    本文参考 嗨客网 Java 实战

    前言

    在Java基础练习题、Java基础练习题文章中,提供了详细的解题思路以及答案,文章还在更新中,本篇文章再给大家安利一些关于 Java EE框架相关知识点的练习题,每道题同样都附有答案链接,答案解题的每个步骤到运行结果都十分详细,十分适合小白拿来练习,也十分适合准备面试的各位复习下 Java EE框架相关知识的部分,这篇文章我会不断更新。
     

     

    文章目录

    正文:Java EE基础练习题(上)

    Servlet

    题目

    使用 IntelliJ IDEA 工具,创建一个简单的 Servlet。

    题目解决思路

    1. IDEA 创建 web 工程,以及完成 Tomcat 部署项目。
    2. 创建一个类继承 HttpServlet 类,重写 doGet 和 doPost 方法。
    3. 使用 XML 的方式创建 Servlet,编辑 web.xml 配置 Servlet,浏览器访问 Servlet。
    4. 使用 @WebServlet 注解的方式创建 Servlet,浏览器访问 Servlet。

    XML方式创建Servlet

    Servlet 代码:

    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.write("嗨客网(www.haicoder.net)\n");
    
            // 输出内容到网页
            pw.write("

    XML方式创建Servlet


    "
    ); pw.write("

    第一个Servlet程序

    "
    ); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    web.xml 文件配置:

    
    <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>servlet1servlet-name>
            
            <servlet-class>net.haicoder.servlet01.Servletservlet-class>
        servlet>
        
        <servlet-mapping>
            
            <servlet-name>servlet1servlet-name>
            
            <url-pattern>/demo01url-pattern>
        servlet-mapping>
    web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    注解方式创建Servlet

    Servlet 代码:

    @WebServlet("/demo02")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.write("嗨客网(www.haicoder.net)\n");
    
            // 输出内容到网页
            pw.write("

    注解方式创建Servlet


    "
    ); pw.write("

    第二个Servlet程序

    "
    ); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-servlet.html

    GenericServlet

    题目

    使用 继承 GenericServlet 的方式,创建一个简单的 Servlet。

    题目解决思路

    1. 创建一个类继承 GenericServlet 类,重写 service 方法。
    2. 使用 @WebServlet 注解的方式创建 Servlet,浏览器访问 Servlet。

    代码具体实现

    Servlet 代码:

    @WebServlet("/demo03")
    public class Servlet extends GenericServlet {
        @Override
        public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.write("嗨客网(www.haicoder.net)\n");
    
            // 输出内容到网页
            pw.write("

    注解方式创建Servlet


    "
    ); pw.write("

    这是继承GenericServlet实现Servlet程序

    "
    ); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-generic-servlet.html

    HttpServletRequest获取请求行

    题目

    通过 HttpServletRequest 对象,获取请求行中相关信息。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet。
    2. 使用 getMethod 方法获取请求行中的请求方式。
    3. 使用 getRequestURI 方法获取请求行中的的 URI。
    4. 使用 getProtocol 方法获取协议和版本。
    5. 使用 getQueryString 方法获取查询字符串。

    代码具体实现

    Servlet 代码:

    @WebServlet("/demo01")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); // 获取请求行的信息 pw.print("获取请求的方式:" + request.getMethod() + "
    "
    ); pw.print("获取请求的URI:" + request.getRequestURI() + "
    "
    ); pw.print("获取协议和版本:" + request.getProtocol() + "
    "
    ); pw.print("获取查询字符串:" + request.getQueryString() + "
    "
    ); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request.html

    HttpServletRequest获取请求头

    题目

    通过 HttpServletRequest 对象,获取请求头中相关信息

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet。
    2. 使用 headerNames 方法获取所有请求头的名称。
    3. 使用 getHeader 方法根据请求头名称获取值。

    代码具体实现

    Servlet 代码:

    @WebServlet("/demo02")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); // 获取请求头的名称 Enumeration<String> headerNames = request.getHeaderNames(); // 遍历所有请求头 while(headerNames.hasMoreElements()){ // 获取请求头名称 String name = headerNames.nextElement(); // 根据头查询信息 String value = request.getHeader(name); // 输出信息 pw.print("名称:" + name + " 值:" + value + "
    "
    ); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request2.html

    HttpServletRequest获取浏览器类型

    题目

    通过 HttpServletRequest 对象,获取请求头 user-agent 的值,可以得出浏览器类型。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet。
    2. 通过 HttpServletRequest 对象,获取请求头 user-agent 的值。
    3. 根据 user-agent 的值,输出浏览器类型。

    代码具体实现

    Servlet 代码:

    @WebServlet("/demo03")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); // 获取浏览器类型 String userAgent = request.getHeader("user-agent"); if (userAgent.contains("Edg")) { //3.输出浏览器的类型 pw.print("您的浏览器是:Edge" ); } else if(userAgent.contains("OPR")) { pw.print("您的浏览器是:Opera" ); } else if(userAgent.contains("Chrome")) { pw.print("您的浏览器是:Chrome" ); } else if(userAgent.contains("Safari")) { pw.print("您的浏览器是:Safari" ); } else if(userAgent.contains("Firefox")) { pw.print("您的浏览器是:Firefox" ); } else { pw.print("您的浏览器是:IE浏览器或其它"); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request3.html

    HttpServletRequest获取表单数据

    题目

    通过 HttpServletRequest 对象,获取表单提交的数据。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet。
    2. 通过 HttpServletRequest 对象,获取表单提交的数据。
    3. 使用 getParameter 获取单个参数的值。
    4. 使用 getParameterValues 获取多选框内容。
    5. 使用 getParameterNames 获取所有的参数名。
    6. 使用 getParameterMap 获取所有参数的名和值。

    代码具体实现

    注册页面代码:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>注册界面title>
    head>
    <body>
        <h2>用户注册h2>
        <form action="demo05" method="post">
            用户名: <input type="text" name="name"><br/>
            性别: <input type="radio" name="gender" value="" checked="checked"/><input type="radio" name="gender" value=""/><br/>
            城市:
            <select name="city">
                <option value="广州">广州option>
                <option value="深圳">深圳option>
                <option value="上海">上海option>
            select>
            <br/>
            爱好:
            <input type="checkbox" name="hobby" value="篮球"/>篮球
            <input type="checkbox" name="hobby" value="游泳"/>游泳
            <input type="checkbox" name="hobby" value="跑步"/>跑步
            <br/>
            <input type="submit" value="注册"/>
        form>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    Servlet 代码:

    @WebServlet("/demo04")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 通过响应对象获取打印流
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); // 获取单个参数的值 pw.print("

    getParameter方法

    "
    ); String name = request.getParameter("name"); pw.print("用户名参数:" + name + "
    "
    ); // 获取多选框内的内容 String[] hobbies = request.getParameterValues("hobby"); pw.print("爱好多选框:" + Arrays.toString(hobbies) + "
    "
    ); // 获取所有参数名 pw.print("

    getParameterNames方法

    "
    ); Enumeration<String> parameterNames = request.getParameterNames(); // 遍历参数名 while(parameterNames.hasMoreElements()){ String parameterName = parameterNames.nextElement(); // 得到参数值 String parameterValue = request.getParameter(parameterName); // 输出结果 pw.print("参数名:" + parameterName + " 参数值:" + parameterValue + "
    "
    ); } // 获取所有参数 pw.print("

    getParameterMap方法

    "
    ); Map<String, String[]> parameterMap = request.getParameterMap(); parameterMap.forEach((k,v) -> pw.print("参数名:" + k + " 参数值:" + Arrays.toString(v) + "
    "
    )); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request4.html

    HttpServletRequest封装表单数据

    题目

    使用 HttpServletRequest 对象,获取表单提交数据,并使用 BeanUtils 工具类封装数据。

    题目解决思路

    1. 创建注册表单页面。
    2. 创建 JavaBean 对象,导入对应 jar 包。
    3. 使用 @WebServlet 注解的方式创建 Servlet
    4. 通过 HttpServletRequest 对象,使用 getParameterMap 方法,获取表单数据。
    5. 使用 BeanUtils 工具类,封装数据。

    代码具体实现

    注册界面:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>注册界面title>
    head>
    <body>
        <h2>用户注册h2>
        <form action="demo05" method="post">
            用户名: <input type="text" name="name"><br/>
            性别: <input type="radio" name="gender" value="" checked="checked"/><input type="radio" name="gender" value=""/><br/>
            城市:
            <select name="city">
                <option value="广州">广州option>
                <option value="深圳">深圳option>
                <option value="上海">上海option>
            select>
            <br/>
            爱好:
            <input type="checkbox" name="hobby" value="篮球"/>篮球
            <input type="checkbox" name="hobby" value="游泳"/>游泳
            <input type="checkbox" name="hobby" value="跑步"/>跑步
            <br/>
            <input type="submit" value="注册"/>
        form>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    User 类代码:

    public class User {
        // 属性
        private String name;
        private String gender;
        private String city;
        private String hobby[];
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", city='" + city + '\'' +
                    ", hobby=" + Arrays.toString(hobby) +
                    '}';
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getCity() {
            return city;
        }
    
        public void setCity(String city) {
            this.city = city;
        }
    
        public String[] getHobby() {
            return hobby;
        }
    
        public void setHobby(String[] hobby) {
            this.hobby = hobby;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    Servlet 代码:

    @WebServlet("/demo05")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 获取表单提交数据
            Map<String, String[]> map = request.getParameterMap();
            // 创建User对象
            User user = new User();
    
            // 使用BeanUtils工具类封装表单数据
            try {
                BeanUtils.populate(user,map);
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 打印User对象
            System.out.println("嗨客网(www.haicoder.net)\n");
            System.out.println("【表单数据】:" + user);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request5.html

    HttpServletRequest操作请求域数据

    题目

    使用 HttpServletRequest 对象,完成对请求域数据的设置、获取、删除等操作。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 通过 HttpServletRequest 对象,使用 setAttribute 方法,在请求域中创建键和值。
    3. 使用 getAttribute 方法,根据获取取请求域中的值。
    4. 使用 removeAttribute 方法,删除请求域中的键和值。

    代码具体实现

    Servlet 代码:

    @WebServlet("/demo06")
    public class Servlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); // 请求域中创建键和值 request.setAttribute("user","HaiCoder"); request.setAttribute("password",123); // 获取请求域中的键和值 pw.write("

    获取请求域的键和值

    "
    ); String user = (String) request.getAttribute("user"); Integer password = (Integer) request.getAttribute("password"); // 在页面显示 pw.write("用户名:" + user + "
    "
    ); pw.write("密码:" + password + "
    "
    ); // 删除请求域的键和值 pw.write("

    删除请求域的键和值

    "
    ); request.removeAttribute("user"); // 再次获取请求域中的键和值 pw.write("

    再次获取请求域中的键和值

    "
    ); user = (String) request.getAttribute("user"); password = (Integer) request.getAttribute("password"); // 页面显示 pw.write("用户名:" + user + "
    "
    ); pw.write("密码:" + password + "
    "
    ); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request6.html

    HttpServletRequest完成请求转发

    题目

    使用 HttpServletRequest 对象,完成请求转发的功能。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 通过 HttpServletRequest 对象,使用 setAttribute 方法,在请求域中创建键和值。
    3. 使用请求转发,将请求域的数据转发给第二个页面。

    代码具体实现

    ServletDemoOne 代码:

    @WebServlet("/one")
    public class ServletDemoOne extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 请求域设值
            request.setAttribute("user","haicoder");
            // 请求转发
            request.getRequestDispatcher("/two").forward(request,response);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    ServletDemoTwo 代码:

    @WebServlet("/two")
    public class ServletDemoTwo extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 获取请求域数据
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); String username = (String) request.getAttribute("user"); pw.println("页面二获取请求域数据:" + username); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-request7.html

    HttpServletResponse设置响应的内容

    题目

    使用 HttpServletResponse 对象,设置响应的内容类型和编码,设置响应码以及错误信息。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 运用 HttpServletResponse 对象,使用 setContentType 方法设置响应的内容类型和编码。
    3. 使用 sendError 方法设置响应码以及错误信息。

    代码具体实现

    @WebServlet("/demo01")
    public class ServletDemo extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 设置响应码以及错误信息
            response.sendError(404,"找不到页面");
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-response.html

    HttpServletResponse实现重定向

    题目

    使用 HttpServletResponse 对象,实现重定向跳转新页面。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 运用 HttpServletResponse 对象,使用 sendRedirect 方法实现重定向。

    代码具体实现

    @WebServlet("/demo02")
    public class ServletDemo extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 重定向
            response.sendRedirect("http://www.haicoder.net");
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-response2.html

    HttpServletResponse实现 3 秒后跳转

    题目

    使用 HttpServletResponse 对象,实现 3 秒后跳转到 嗨客网

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 运用 HttpServletResponse 对象,通过 setHeader 方法设置响应头 refresh,实现 3 秒跳转到嗨客网。

    代码具体实现

    @WebServlet("/demo03")
    public class ServletDemo extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            PrintWriter pw = response.getWriter();
            pw.print("嗨客网(www.haicoder.net)
    "
    ); pw.print("
    "
    ); pw.print("3秒后跳转到嗨客网"); // 设置过3秒跳转新页面 response.setHeader("refresh","3;url=http://www.haicoder.net"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-response3.html

    HttpServletResponse设置响应头

    题目

    使用 HttpServletResponse 对象,通过设置响应头的方式,实现页面跳转。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 运用 HttpServletResponse 对象,通过 setHeader 方法设置响应头 location,同时设置响应码为 302。

    代码具体实现

    @WebServlet("/demo04")
    public class ServletDemo extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            // 设置响应的内容类型和编码
            response.setContentType("text/html;charset=utf-8");
            // 跳转新页面
            response.setHeader("location","http://www.haicoder.net");
            // 设置响应码
            response.setStatus(302);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-httpservlet-response4.html

    JavaEE Cookie

    题目

    使用 Cookie 对象,创建 Cookie 并将其添加到浏览器。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 创建一个 Cookie 对象。
    3. 使用 HttpServletResponse 对象的 addCookie 方法,添加 Cookie 到浏览器中。

    代码具体实现

    @WebServlet("/addCookie")
    public class ServletDemo extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 创建Cookie对象
            Cookie cookie = new Cookie("user","haicoder");
            // 往浏览器中添加Cookie对象
            response.addCookie(cookie);
            PrintWriter pw = response.getWriter();
    
            pw.print("嗨客网(www.haicoder.net)\n");
            pw.print("

    添加Cookie成功!

    "
    ); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-cookie.html

    JavaEE Cookie记住账号密码

    题目

    使用 Cookie 对象,实现登录模块的记住账号、密码的功能。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 当用户选择记住我的选项后,而且登录成功,则将用户信息存入到浏览器的 Cookie 中。
    3. 当用户登录失败,则跳转错误界面。

    代码具体实现

    登录界面代码:

    DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>用户登录title>
        
        <script src="js/commons.js">script>
    head>
    <body>
    <h2>用户登录h2>
    <form action="login" method="post" id="loginForm">
        <table>
            <tr>
                <td width="60">用户名td>
                <td><input type="text" name="username" id="username"/>td>
            tr>
            <tr>
                <td>密码td>
                <td><input type="password" name="password" id="password"/>td>
            tr>
            <tr>
                <td>记住我td>
                
                <td><input type="checkbox" name="remember"/>td>
            tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="登录"/>td>
            tr>
        table>
    form>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    登录成功界面代码:

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录成功title>
    head>
    <body>
        嗨客网(www.haicoder.net)<br/>
        <h2>登录成功,欢迎你!h2>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    登录失败界面代码:

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录失败title>
    head>
    <body>
        嗨客网(www.haicoder.net)<br/>
        <h2>登录失败h2>
        <a href="login.html">请重试a>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    前端 commos.js 代码

    // 页面加载完毕以后执行
    window.onload = function () {
        // 读取浏览器端的cookie,读取用户名和密码
        let username = getCookieValue("username");
        let password = getCookieValue("password");
        // 判断用户名和密码是否有值
        if (username!="" && password!="") {
            // 如果有值就把表单中设置用户名和密码
            document.getElementById("username").value = username;
            document.getElementById("password").value = password;
            // 提交表单
            document.getElementById("loginForm").submit();
        }
    }
    
    /*
    编写方法,通过键获取Cookie的值
     */
    function getCookieValue(name) {
        // 读取浏览器端的所有的Cookie,返回字符串
        let cookies = document.cookie;
        // 判断cookie是否是空串
        if (cookies != "") {
            //得到:username=admin; password=123
            //按分号拆分
            let arr = cookies.split(";");
            //遍历每个元素
            for (let cookie of arr) {
                //按等号拆分
                let strings = cookie.split("=");
                //表示键
                let key = strings[0].trim();
                //表示值
                let value = strings[1].trim();
                //查找name是否与key相同,如果相同就返回value
                if (key == name) {
                    return value;
                }
            }
        }
        //没有找到,返回空串
        return "";
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    LoginServlet 代码:

    @WebServlet("/login")
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 获取用户输入
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            // 登录
            if("haicoder".equals(username) && "123".equals(password)){
                String remember = request.getParameter("remember");
                if(remember != null){
                    Cookie cookie = new Cookie(username,password);
                    response.addCookie(cookie);
                }
                // 登录成功
                response.sendRedirect("success.html");
            }else{
                // 登录失败
                response.sendRedirect("failure.html");
            }
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-cookie2.html

    JavaEE Cookie自动登录

    题目

    使用 Cookie 对象,实现记住账号密码,下次登录时自动登录。

    题目解决思路

    1. 使用 @WebServlet 注解的方式创建 Servlet
    2. 当用户选择记住我的选项后,而且登录成功,则将用户信息存入到浏览器的 Cookie 中。
    3. 当用户登录失败,则跳转错误界面。
    4. 若登录成功并选择了记住密码,则下次自动登录。

    代码具体实现

    登录界面代码:

    DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>用户登录title>
         
        <script src="js/commons.js">script>
    head>
    <body>
    <h2>用户登录h2>
    <form action="login" method="post" id="loginForm">
        <table>
            <tr>
                <td width="60">用户名td>
                <td><input type="text" name="username" id="username"/>td>
            tr>
            <tr>
                <td>密码td>
                <td><input type="password" name="password" id="password"/>td>
            tr>
            <tr>
                <td>记住我td>
                
                <td><input type="checkbox" name="remember"/>td>
            tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="登录"/>td>
            tr>
        table>
    form>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    登录成功界面代码:

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录成功title>
    head>
    <body>
        嗨客网(www.haicoder.net)<br/>
        <h2>登录成功,欢迎你!h2>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    登录失败界面代码:

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录失败title>
    head>
    <body>
        嗨客网(www.haicoder.net)<br/>
        <h2>登录失败h2>
        <a href="login.html">请重试a>
    body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    commons.js 代码

    //页面加载完毕以后执行
    window.onload = function () {
        //读取浏览器端的cookie,读取用户名和密码
        let username = getCookieValue("username");
        let password = getCookieValue("password");
        //判断用户名和密码是否有值
        if (username!="" && password!="") {
            //如果有值就把表单中设置用户名和密码
            document.getElementById("username").value = username;
            document.getElementById("password").value = password;
            //提交表单
            document.getElementById("loginForm").submit();
        }
    }
    
    
    /*
    编写方法,通过键获取Cookie的值
     */
    function getCookieValue(name) {
        //1.读取浏览器端的所有的Cookie,返回字符串
        let cookies = document.cookie;
        //2.判断cookie是否是空串
        if (cookies != "") {
            //得到:username=admin; password=123
            //按分号拆分
            let arr = cookies.split(";");
            //遍历每个元素
            for (let cookie of arr) {
                //按等号拆分
                let strings = cookie.split("=");
                //表示键
                let key = strings[0].trim();
                //表示值
                let value = strings[1].trim();
                //查找name是否与key相同,如果相同就返回value
                if (key == name) {
                    return value;
                }
            }
        }
        //没有找到,返回空串
        return "";
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    LoginServlet 代码:

    @WebServlet("/login")
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 获取用户输入
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            // 登录
            if("haicoder".equals(username) && "123".equals(password)){
                String remember = request.getParameter("remember");
                if(remember != null){
                    Cookie cookie1 = new Cookie("username",username);
                    Cookie cookie2 = new Cookie("password",password);
                    response.addCookie(cookie1);
                    response.addCookie(cookie2);
                }
                // 登录成功
                response.sendRedirect("success.html");
            }else{
                // 登录失败
                response.sendRedirect("failure.html");
            }
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-cookie3.html

    JavaEE JSP输出当前时间

    题目

    使用 JSP 相关知识,在浏览器上输出当前时间。

    题目解决思路

    1. 在 JSP 里,可以直接编写 Java 代码,但 Java 代码必须写在 <%%> 中。
    2. 使用 Date 获取当前时间,并使用 SimpleDateFormat 格式化当前时间。

    代码具体实现

    <%@ page import="java.text.SimpleDateFormat" %>
    <%@ page import="java.util.Date" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
      
        当前时间
          
      
      
        

    现在的时间是: <% // 获取当前时间 Date date = new Date(); // 创建格式化对象 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 格式化当前时间 String dateStr = dateFormat.format(date); out.print(dateStr); %>

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-jsp.html

    JavaEE JSP循环遍历集合元素

    题目

    使用 JSP 相关知识,创建集合并添加元素,再循环遍历集合,将元素输出到页面。

    题目解决思路

    1. 在 JSP 里,可以直接编写 Java 代码,但 Java 代码必须写在 <%%> 中。
    2. 定义 ArrayList 集合并添加元素。
    3. 循环遍历集合,输出到页面。

    代码具体实现

    <%@ page import="java.util.ArrayList" %>
    <%@ page import="java.util.List" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
        
            有序列表
        
        
            

    嗨客网(www.haicoder.net)

    <%--定义一个集合存入元素--%> <% List users = new ArrayList<>(); users.add("张三"); users.add("李四"); users.add("王五"); %> <%--遍历集合--%>
      <% for(String user : users) {%>
    1. <%=user%>
    2. <%}%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-jsp2.html

    JavaEE JSP作用域

    题目

    请分别存入数据到 JSP 四大作用域中,再取出四大作用域中的值,显示在页面上。

    题目解决思路

    1. 在 JSP 里,可以直接编写 Java 代码,但 Java 代码必须写在 <%%> 中。
    2. 使用 setAttribute 方法存数据到四大作用域。
    3. 使用 getAttribute 方法取出域中的值。

    代码具体实现

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
        
            JSP四大作用域
        
        
            

    嗨客网(www.haicoder.net)

    <%--存入数据到四大作用域中--%> <% pageContext.setAttribute("name","张三"); request.setAttribute("name","李四"); session.setAttribute("name","王五"); application.setAttribute("name","赵六"); %> <%--取出四大作用域中的值--%> 页面域:<%=pageContext.getAttribute("name")%>
    请求域:<%=request.getAttribute("name")%>
    会话域:<%=session.getAttribute("name")%>
    上下文域:<%=application.getAttribute("name")%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-jsp3.html

    JavaEE include指令

    题目

    使用 JSP 的 include 指令,包含其他的 JSP 页面。

    题目解决思路

    1. 分别创建 index.jsp、head.jsp 两个页面。
    2. 在 index.jsp 页面使用 <%@ include file=“head.jsp”%> 包含 head.jsp。

    代码具体实现

    head.jsp 页面:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
        
            头部
        
        
            

    嗨客网(www.haicoder.net)

    这里是头部文件

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    index.jsp 页面:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
        
            主页
        
        
            <%@ include file="head.jsp"%>
            

    这里是网页主体部分

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    详细步骤与运行结果:https://haicoder.net/case/javaee/javaee-jsp4.html

    更多

    原文大纲: 链接

    更多文章,可以关注下方公众号:

    嗨客网(www.haicoder.net)

  • 相关阅读:
    LVGL---标签(lv_label)
    redis事务
    设计模式之生产者/消费者模式
    C++项目——云备份-③-实用工具类设计与实现
    人工神经网络算法的应用,神经网络是机器算法吗
    金仓数据库KingbaseES客户端编程开发框架-SQLAlchemy(4. 程序示例)
    [git] 根据master更新本地分支
    条码二维码读取设备在医疗设备自助服务的重要性
    声明 Array List 的3种方式 ArrayList、Collection、List 的区别
    简单聊聊Innodb崩溃恢复那些事
  • 原文地址:https://blog.csdn.net/weixin_41384860/article/details/126274612