1

Тема: Java та web-програмування

Доброго дня. Вивчаю веб програмування мовою Java. Виникла невеличка проблема:
Є сторінка, на ній форма. Ворма відправляється в сервлет через JavaScript, і скрипт отримує відповідь.
сервлет

@WebServlet("/Reg")
public class Registration extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String name = request.getParameter("userName");
        String pasw = request.getParameter("pasw");
        Users u = new Users();
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try{
            /* TODO output your page here. You may use following sample code. */
            out.println("<form>\n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"login\" value=\"" + name + "\" id=\"login\"/>");
            if(u.contains(name)){
                out.println("<style class='red'> такий нікнейм зайнятий</style></label></div>\n");
            }else{
                out.println("<style class='green'> такий нікнейм вільний</style></label></div>\n");
            }
            out.println("\t<div>"
                    + "<label><input type=\"tpasword\" name=\"pasw\" value=\"" + pasw + "\" id=\"pasword\"/>");
            if(pasw.length() < 6){
                out.println("<style class='red' id='psw'> короткий пароль</style>");
            }
            out.println("</label><button onclic='createPasword()'>Згенерувати пароль</button></div>/n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"userName\" value=\"Петро\" id=\"name\"/>ім'я</label></div>\n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"lastName\" value=\"Степанович\" id=\"lastName\"/>по-батькові</label></div>\n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"family\" value=\"Степовий\" id=\"name\"/>прізвище</label></div>\n");
            out.println("\t<div>"
                    + "<label><input type=\"date\" name=\"date\" id=\"date\"/>Дата народження</label></div>\n");
            out.println("\t<div><p/>"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='0'/> Гість\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='1'/> Учень\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='2'/> Вчитель\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='3'/> Модератор\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='4'/ onclic='adminPaswordEntered()'> Адміністратор\n"
                    + "\t</div>"
            );
            out.println("\t<div id='admin'>"
                    + "</div>\n");
            out.println("\t<div></div>");            
            
            out.println("</form>");   
        }finally{
            out.flush();
            out.close();
        }
    }
//bla-bla-bla
}

Робочий скрипт

function registr(){
    let url = "/Reg";
    let body = "userName=" + document.getElementById("name").value +
            "&pasw=" + document.getElementById("pasword").value;
    let req = new XMLHttpRequest();
    req.open("POST", url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.onreadystatechange = function(){
        if (req.readyState == 4 && req.readyState == 200) {
            regForm(this);
        }
    };
    req.send(body);
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>Start</servlet-name>
        <servlet-class>Start</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Registration</servlet-name>
        <servlet-class>Registration</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Start</servlet-name>
        <url-pattern>/Start</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Registration</servlet-name>
        <url-pattern>/Reg</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

при запуску кидається 404-еророю

Failed to load resource: the server responded with a status of 404 () (12:26:30:865 | error, network)
  at http://localhost:8080/Reg

Чому так відбувається?

Дякую за допомогу.

2

Re: Java та web-програмування

DianaSky написав:

Доброго дня. Вивчаю веб програмування мовою Java. Виникла невеличка проблема:
Є сторінка, на ній форма. Ворма відправляється в сервлет через JavaScript, і скрипт отримує відповідь.
сервлет

@WebServlet("/Reg")
public class Registration extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String name = request.getParameter("userName");
        String pasw = request.getParameter("pasw");
        Users u = new Users();
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try{
            /* TODO output your page here. You may use following sample code. */
            out.println("<form>\n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"login\" value=\"" + name + "\" id=\"login\"/>");
            if(u.contains(name)){
                out.println("<style class='red'> такий нікнейм зайнятий</style></label></div>\n");
            }else{
                out.println("<style class='green'> такий нікнейм вільний</style></label></div>\n");
            }
            out.println("\t<div>"
                    + "<label><input type=\"tpasword\" name=\"pasw\" value=\"" + pasw + "\" id=\"pasword\"/>");
            if(pasw.length() < 6){
                out.println("<style class='red' id='psw'> короткий пароль</style>");
            }
            out.println("</label><button onclic='createPasword()'>Згенерувати пароль</button></div>/n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"userName\" value=\"Петро\" id=\"name\"/>ім'я</label></div>\n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"lastName\" value=\"Степанович\" id=\"lastName\"/>по-батькові</label></div>\n");
            out.println("\t<div>"
                    + "<label><input type=\"text\" name=\"family\" value=\"Степовий\" id=\"name\"/>прізвище</label></div>\n");
            out.println("\t<div>"
                    + "<label><input type=\"date\" name=\"date\" id=\"date\"/>Дата народження</label></div>\n");
            out.println("\t<div><p/>"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='0'/> Гість\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='1'/> Учень\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='2'/> Вчитель\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='3'/> Модератор\n"
                    + "\t\t<input type=\"radio\" name=\"prava\" value='4'/ onclic='adminPaswordEntered()'> Адміністратор\n"
                    + "\t</div>"
            );
            out.println("\t<div id='admin'>"
                    + "</div>\n");
            out.println("\t<div></div>");            
            
            out.println("</form>");   
        }finally{
            out.flush();
            out.close();
        }
    }
//bla-bla-bla
}

Робочий скрипт

function registr(){
    let url = "/Reg";
    let body = "userName=" + document.getElementById("name").value +
            "&pasw=" + document.getElementById("pasword").value;
    let req = new XMLHttpRequest();
    req.open("POST", url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.onreadystatechange = function(){
        if (req.readyState == 4 && req.readyState == 200) {
            regForm(this);
        }
    };
    req.send(body);
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>Start</servlet-name>
        <servlet-class>Start</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Registration</servlet-name>
        <servlet-class>Registration</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Start</servlet-name>
        <url-pattern>/Start</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Registration</servlet-name>
        <url-pattern>/Reg</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

при запуску кидається 404-еророю

Failed to load resource: the server responded with a status of 404 () (12:26:30:865 | error, network)
  at http://localhost:8080/Reg

Чому так відбувається?

Дякую за допомогу.

https://www.digitalocean.com/community/ … -rewriting

Подякували: DianaSky1

3

Re: Java та web-програмування

Я б радив користуватися Spring Boot
https://start.spring.io/

Подякували: DianaSky, ostap34PHP2