【暑假学习笔记】之——servlet,使用idea写一个注册界面并返回注册成功(解决乱码问题)的案例

话不多说,我们新建一个java web + tomcat项目,具体步骤可以参照我的另一篇:

用Intellij idea新建一个java web+Servlet项目(有实例)到配置完成那一步再回来。

在src目录下新建web文件夹,在web文件夹下新建regServlet.java文件。

在与src同级的web目录下新建register.html文件。

先来写register.html里的内容,也就是注册界面。代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>servlet2</title>
</head>
<body>
    <!--
        1.完整路径:localhost:8080/servlet2/reg
        2.绝对路径:格式:/项目名/网名 实例:/srevlet2/reg
        3.相对路径(*):只需写出目标和当前页面的相对位置
        当前页面:/servlet2/register.html
        访问目标:/servlet2/reg
        二者是平级关系,相对路径是reg,不能以/开头
    -->
    <form action="reg" method="host">
        <p>
            账号:<input type="text" name="userName">
        </p>
        <p>
            密码:<input type="password" name="passWord">
        </p>
        <p>
            性别:
            <input type="radio" name="sex" value="M">男
            <input type="radio" name="sex" value="F">女
        </p>
        <p>
            兴趣:
            <input type="checkbox" name="interest" value="sport">运动
            <input type="checkbox" name="interest" value="music">音乐
            <input type="checkbox" name="interest" value="movie">电影
        </p>
        <p>
            <input type="submit" value="注册">
        </p>
    </form>
</body>
</html>

把所有需要提交的组件都写在form中,form标签中的method=“host” 表示这里

使用HOST来进行请求。

GET和HOST的详解:servlet请求方式

action="reg"表示点击提交以后会跳转到这个页面,这里使用相对路径。而reg其实是regServlet.java文件的别名。

别名在web.xml文件中进行设置,代码如下:

<?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>reg</servlet-name>
        <servlet-class>web.regServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>reg</servlet-name>
        <url-pattern>/reg</url-pattern>
    </servlet-mapping>

</web-app>

然后我们来写regServlet.java文件,代码如下:

package web;

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 regServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");

        //处理请求的一般步骤是:
        //1.接收参数
        String user = req.getParameter("userName");
        String pwd = req.getParameter("passWord");
        String sex = req.getParameter("sex");
        String[] interests = req.getParameterValues("interest");

        //处理请求乱码
        //方案一:将乱码后的字符串按照ISO还原再按UTF编码。不常用
        byte[] bs = user.getBytes("ISO8859-1");
        user = new String(bs,"utf-8");
        //方法二:只对GET有效,在eclipse中:server.xml中65行加URIEncoding="utf-8"
        //优点:简单  缺点:只对GET有效
        // 在idea中,File->Settings->Editor->File Encodings 把页面上的三个选项都改成UTF-8
        //方法三:只对POST有效,在接收参数前,加req.setCharactorEncoding("UTF-8")
        //声明试题内容的编码为UTF-8
        //优点:简单  缺点:只对POST有效

        //2.处理业务
        //常规的注册业务应该保存这些数据,但本案例重点在于传参,因此就不存了。
        System.out.println(user);
        System.out.println(pwd);
        System.out.println(sex);
        if (interests != null) {
            for (String i : interests) {
                System.out.println(i);
            }
        }
        //3.发送响应,这里也要对编码方式进行处理,不然“注册成功”就会是乱码
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.println("<p>注册成功</p>");
        out.close();
    }
}

部署tomcat~

OK,点击运行按钮,让我们打开浏览器,输入http://localhost:8080/servlet2/register.html

进入的界面是这样的~

全部输入以后点击注册进入:

到这里,案例就完结了,解决乱码问题在regServlet.java文件中的注释里有写三种方法。

顺便,如果有的同学遇到在idea中进行修改以后重新进入浏览器却没有变化这种问题,一定记得清空浏览器缓存,并重新启动tomcat!


谢谢你看到这里!写作仓促,有疏漏之处还请评论指正,共同探讨进步!


猜你喜欢

转载自blog.csdn.net/LimonSea/article/details/81272150
今日推荐