本文介绍: 我们html 页面上经常会使用超链接或者图片组件,这时我们需要指定路径这里路径都是从”/”开始的。这里方法参数为一个字符串要与表单输入框名字一致。第二步:选择SpringBoot项目,按照图上的步骤选择并输入对应内容使用请求对象request.getParameter()获取,之后点击next进行下一步这里的”/”就是 URL 地址抽象路径部分最开始的”/”第一步新建一个项目

目录

一、创建SpringBoot项目

步骤:

第一步:新建一个项目

第二步:选择SpringBoot项目,按照图上的步骤选择并输入对应内容,

              之后点击next进行下一步。

              注:第二小步可改用阿里云:https://start.aliyun.com  ​编辑

 第三步:勾选Spring Web,并点击finish完成项目的创建

二、SpringBoot项目结构

三、html基础

1、构成一个页面的基本结构:

2、html常用标签介绍:

四、URL – 统一资源定位

1、请求服务端页面时,浏览器地址栏上输入URL地址的规则:

2、在页面上指定其他资源的路径时的规则:

五、表单的使用

六、Controller的创建

需要注意几个事项:

1、controller包需要放在项目的根包下​编辑

2、Controller上要定义@Controller注解,否则Spring MVC框架不识别该类

3、处理业务的方法要定义@RequestMapping注解,且参数要与页面表单中action的值一致​编辑

4、获取表单信息

使用请求对象:request.getParameter()获取,                        这里方法参数为一个字符串要与表单中输入框名字一致


一、创建SpringBoot项目

步骤:

第二步:选择SpringBoot项目,按照图上的步骤选择并输入对应内容

              之后点击next进行下一步。

              注:第二小步可改用阿里云:https://start.aliyun.com  

 第三步:勾选Spring Web,并点击finish完成项目创建

二、SpringBoot项目结构

三、html基础

1、构成一个页面基本结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
</head>
<body>

</body>
</html>

2、html常用标签介绍

四、URL – 统一资源定位

UPL:统一资源定位  
DNS:域名解析服务      
                              协议名称   主机地址信息    资源的抽象路径
在本电脑开启服务器,在浏览器输入http://  localhost: 8080  /index.html 
即可进入制作网页
                              协议名称      IP     端口   /resources/static/... 里的文件名

1、请求服务端页面时,浏览器地址栏上输入URL地址规则

2、在页面上指定其他资源的路径时的规则

五、表单的使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
</head>
    <body>
        <center>
              <h1>用户注册</h1>
              <!--
                        <form>标签:表单
                                   用于用户在页面上输入的内容提交给服务器的组件。
                              注意:只有被form标签包含的输入框中用户输入的内容才会被提交。

                         form表单上有两个重要的属性:
                              action: 用于指定表单提交的 位置(该位置服务端指定的)
                              method: 用于指定表单提交的 方式 ,有两个可选值getpost
                                    get : 表单数据的提交会被包含在提交的请求路径中的抽象路径部分
                                    post: 表单数据的提交会被包含在请求消息正文中后(后面讲)

                         表单提交后的路径:
                                http://localhost:8080/regUser?username=%E8%B5%B5%E8%80%81%E9%AA%9A&amp;password=123&amp;nickname=sao&amp;age=99
                         在该路径中,资源的抽象路径部分为:
                                /regUser?username=%E8%B5%B5%E8%80%81%E9%AA%9A&amp;password=123&nickname=sao&age=99
                                URL格式中,对于抽象路径可以包含两部分,请求资源的路径和附带的参数。要求他们之间用"?"隔开
                            其中:
                                /regUser   请求资源的路径(这个名字是你在form表单中属性action创建的那个名字username=%E8%B5%B5%E8%80%81%E9%AA%9A&password=123&nickname=sao&age=99  附带的参数

                                请求资源的路径在表单提交时它的内容就是表单上指定的action的值。
                                附带的参数就是表单中所有输入框中的信息,
                         具体格式:
                                输入框1的名字=输入框1中用户输入的信息&输入框2的名字=输入框2的内容&...
                                                                ^                        ^
                                                                &用于分割一个参数
                  -->
              <form action="/regUser" method="get">
                  <table border="2">
                        <tr>
                          <td>用户名</td>
                          <td><input name="username" type="text"></td>
                        </tr>
                        <tr>
                          <td>密码</td>
                          <td><input name="password" type="password"></td>
                        </tr>
                        <tr>
                          <td>昵称</td>
                          <td><input name="nickname" type="text"></td>
                        </tr>
                        <tr>
                          <td>年龄</td>
                          <td><input name="age" type="text"></td>
                        </tr>
                        <tr>
                          <td colspan="2" align="center">
                              <!--
                                    提交按钮:type="submit"
                                       作用:当用户点击这个按钮时,会将包含该按钮的表单进行提交
                                -->
                              <input type="submit" value="注册">
                          </td>
                        </tr>
                  </table>
              </form>
        </center>
    </body>
</html>

六、Controller的创建

需要注意几个事项

1、controller包需要放在项目的根包下

2、Controller上要定义@Controller注解,否则Spring MVC框架识别该类

3、处理业务的方法要定义@RequestMapping注解,且参数要与页面表单中action的值一致

4、获取表单信息

使用请求对象request.getParameter()获取,
                        这里方法参数为一个字符串要与表单中输入框名字一致

package com.tedu.springboot2211.controller;

import com.tedu.springboot2211.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 用于处理本网站中和用户相关操作
 *
 * 注意 细节:
 * 细节1:本java文件一定要在src/main/java/com/tedu/springboot2211/controller文件包下,与启动类在同一包中
 * 细节2:一定要有两个@注解(类上@Controller、方法上@RequestMapping("/regUser"))
 * 细节3:@RequestMapping("/regUser")  ()里的参数决定能不能收到表单,所以应当与表单名字一致(建议复制)
 */
@Controller
public class UserController {
    //该File对象表示保存所有用户信息的目录users
    private static File userDir;
    static {
        userDir =new File("./users");
        if (!userDir.exists()) {//如果该目录存在
            userDir.mkdirs();
        }
    }

    /**
     * 用于处理用户注册操作
     * @param request   请求对象
     *                  请求对象中包含了浏览器发送过来的所有信息
     * @param response  响应对象
     *                  响应对象表示的是服务端要给浏览器回复的内容
     */
    @RequestMapping("/regUser")
    //HttpServletRequest、HttpServletResponse 接收表单的方法的固定参数 请求与响应
    public void reg(HttpServletRequest request,  HttpServletResponse response){
        System.out.println("开始处理用户注册!!!");
        /*
            1:获取注册页面上表单提交的用户信息
            2:将该用户信息保存
            3:响应给用户一个注册结果页面
         */
        /* 1:获取注册页面上表单提交的用户信息
            当我们向获取表单提交上来的信息时,这里getParameter方法要传入对应输入框的名字
            输入框上name属性指定的名字:<input  name="username"  type="text">
         */
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String nickname = request.getParameter("nickname");
        String ageStr = request.getParameter("age");//临时用的变量名,不要太在意
        System.out.println(username+"," +password+ "," +nickname+ ","+ageStr);

        //必要的数据验证工作
        /*
            当我们调用请求对象的getParameter()方法获取某个客户端传递的参数,
            返回值:
                如果为null:说明客户端没有传递该参数
                举例:
                /regUser?password=xxxx&nickname=xxxx&age=xxxx (参数不包含username)
                String username = request.getParameter("username")
                如果返回值null说明客户端没有传递username这个参数

                如果为空字符串:说明该参数没有值
                举例:
                用户在注册页面上用户名输入框空着不填
                /regUser?username=&password=xxxx&nickname=xxxx&age=xxxx
                String username = request.getParameter("username");
                返回值就是空字符串
         */
        if ( username==null || username.isEmpty() ||
             password==null || password.isEmpty() ||
             nickname==null || nickname.isEmpty() ||
             ageStr == null || ageStr . isEmpty()){
            try {
                response.sendRedirect("/reg_info_error.html");//返回提示用户,再创建一个错误界面
                return; //既然都错了,就到此为止, 返回  重新来过
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        /* 2:将该用户信息保存
            先将该转int的转一下,之后创建集合将需要放的东西都添加进去,最后文件包里创建该用户的文件
         */
        int age = Integer.parseInt(ageStr);//转成int类型包装类转成整数型  这里的age为了表达的更清楚,应当在意
        User user = new User(username,password,nickname,age);
        //重载的File构造器,参数1:所在的父目录  参数2:该File对象表示的文件或目录
        File file = new File(userDir,username+".obj");

        //如果写文件前,发现该文件已经存在了,说明之前已经有用户使用该用户名重复用户)
        if (file.exists()) {
            try {
                response.sendRedirect("/have_user.html");
                return;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


        try (
                FileOutputStream fos = new FileOutputStream(file);      //因为其使用完并关闭自动调用.close()
                ObjectOutputStream oos = new ObjectOutputStream(fos);   //所以我们放在try中直接判断后并关闭,最合适
        ){
            //将该注册用户信息以User对象形式保存在文件中
            oos.writeObject(user);

            // 3:将注册成功页面响应
            response.sendRedirect("/reg_success.html");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

原文地址:https://blog.csdn.net/qq_36028783/article/details/128794646

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_23784.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注