Servlet y JSP | 3: proyectos de desarrollo MVC bajo la idea

 

directorio

patrón de servlet y JSP MVC en el mundo:

En primer lugar, crear un proyecto JavaWeb, la página HTML completa

1. Crear un proyecto 

2, los locales de preparación 

En segundo lugar, el archivo de configuración web.xml, URL asignada al servlet

En tercer lugar, para implementar una clase servlet de Java

1, crear un modelo de la servlet

2, con el fin de implementar una clase de servlet de Java

En cuarto lugar, implementar el archivo de vista JSP correspondiente

fin 



patrón de servlet y JSP MVC en el mundo:

Servlet en el controlador (control), vista de la pantalla Jsp (ver), llano clases Java modelo (modelo).

Detrás de cada uno de estos servicios (solicitud + respuesta), que debería ser un modo de MVC fórmula:

Más específico:

A los problemas del usuario una petición del navegador, se transmite al servidor web a través del protocolo HTTP, que es una solicitud de descubrimiento dinámico de servidor web, que procesará la solicitud al contenedor Tomcat. Tomcat recipiente para encontrar el archivo de instrucciones correspondientes al servlet .class, comenzar sus carreras función de servicio (). En el curso de esta operación será llamado modelo de clases de Java para lograr la solicitud pase al centro, y los resultados se transmiten a través de una solicitud del archivo JSP, esto con el tiempo se Tomcat página JSP a través del vaso devueltos al usuario.


En este artículo se va a crear unas aplicaciones muy simples JavaWeb, sobre todo para empezar familiarizado con el patrón MVC de proyectos de desarrollo en el entorno de desarrollo de la idea. La principal Nota: En el componente Tomcat Servlet y JSP gestión de contenedores, ¿cómo implementar una aplicación.

Nota: JSP es la página real html y luego insertar un código java, eso es todo! 


En primer lugar, crear un proyecto JavaWeb, la página HTML completa

1. Crear un proyecto 

En primer lugar, el derecho a crear un nuevo proyecto en la idea JavaWeb, llamado Concierto de JeffChang. Las operaciones específicas pueden referirse a: IDEA un JavaWeb elemento de configuración

El proyecto se utiliza principalmente para consulta de información Jeff Chang primero 11 World Tour, la casa tendrá una forma para seleccionar el año, después de que presente el usuario de la página de resultados del formulario aparecerá, indicando al usuario la información que el concierto con la ciudad durante el año. Así enfriar!

2, los locales de preparación 

Modificar el index.jsp archivo (esta es la página por defecto de nuestro proyecto), de la siguiente manera:

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

<head>
    <title>JeffChang's Concert</title>
</head>

<body>
<h1 align="center">Welcome to JeffChang's Concert Page!</h1>
<h2 align="center">Year Select Page</h2>
<form method="POST" action="query.do">   <!-- action即当用户提交这个表单时,将传递给url名为query.do的servlet -->
    Select year:
    <p>
        <!-- 创建一个下拉菜单-->
        <select name="year" size="1">
            <option value="2018"> 2018 </option>
            <option value="2019"> 2019 </option>
            <option value="2020"> 2020 </option>
        </select>
    <br><br>
    <div style="text-align: center;">
        <input type="SUBMIT">
    </div>
</form>
</body>

</html>

Después de escrita, ejecución directa para ver si hay mal. la página web debe aparecer como sigue:

 

El seleccionar un año para enviar el formulario, habrá 404 ❗. Debido a que no nos dimos cuenta los puntos de atributo de acción del formulario al servlet, por lo que al momento de enviar el formulario, Tomcat pasará su solicitud a los puntos de atributo de acción al servlet, pero no puede encontrar, por lo que hay 404.


En segundo lugar, el archivo de configuración web.xml, URL asignada al servlet

archivo web.xml es un archivo de despliegue de Tomcat contenedor. Cuando un usuario envía una petición a la URL se pasa a un servidor web, la URL debe ser asignada a un servlet particular, para responder en consecuencia por Tomcat.

código del archivo web.xml es el siguiente:

<?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>
        <!-- 对应mapping中某一个servlet的内部名 -->
        <servlet-name>name1</servlet-name>
        <!-- 当收到请求时,要调用的Java类的相对路径(相对classes文件) -->
        <servlet-class></servlet-class>
    </servlet>

    <servlet-mapping>
        <!-- 为了方便部署,给这个servlet取一个内部名 -->
        <servlet-name>name1</servlet-name>
        <!-- 在index.jsp页面中对应的某表单action属性 -->
        <url-pattern>/query.do</url-pattern>
    </servlet-mapping>

</web-app>

Tenga en cuenta que la clase servlet no se unirá, porque no hemos escrito la correspondencia clase servlet --Java. Que se añadirá más adelante.

En este caso, ejecutarlo, simplemente selecciona la vez, tratar de enviar el formulario:

500 en este momento se quejan, pero no antes de que el 404! Debido a que hemos desplegado url servlet y la cartografía, pero esto no se ha logrado una clase servlet Java ~


En tercer lugar, para implementar una clase servlet de Java

1, crear un modelo de la servlet

MVC, que representa el modelo M, un montón de back-end código Java puro . La clase servlet de Java para llamar a este modelo se implementa para el cálculo de la solicitud enviada al usuario, para dar los resultados correspondientes . Por lo tanto, se desea implementar una clase servlet de Java, se debe implementar un modelo correspondiente.

En el proyecto del directorio src , crear una nueva clase de concierto, y la implementación de un getConcertList:

import java.util.ArrayList;
import java.util.List;

public class Concert {
    private String time;  //演唱会的时间
    private String region;  //演唱会的地区
    private int num;  //巡演的场次

    public Concert() { }
    
    public Concert (int num, String time, String region) {
        this.num = num;
        this.region = region;
        this.time = time;
    }

    public List getConcertList(String year) {
        List concertList = new ArrayList();
        if(year.equals("2018")) {
            concertList.add(new Concert(1,"2018-10-13","北京-五棵松体育馆"));
            concertList.add(new Concert(2,"2018-10-14","北京-五棵松体育馆"));
            concertList.add(new Concert(3,"2018-11-02","澳门-金光综艺馆"));
            concertList.add(new Concert(4,"2018-12-22","深圳-深圳湾体育中心"));
        }
        else if(year.equals("2019")) {
            concertList.add(new Concert(5,"2019-01-19","成都-成都大魔方"));
            concertList.add(new Concert(6,"2019-04-06","台北-小巨蛋"));
            concertList.add(new Concert(7,"2019-04-13","广州-广州宝能体育中心"));
            concertList.add(new Concert(8,"2019-04-27","南京-青奥体育公园体育馆"));
            concertList.add(new Concert(9,"2019-05-11","新加坡-室内体育馆"));
            concertList.add(new Concert(10,"2019-6-08","济南-济南奥体中心体育馆"));
            concertList.add(new Concert(11,"2019-6-22","苏州-苏州奥体中心体育馆"));
            concertList.add(new Concert(12,"2019-6-29","福州-海峡奥体综合体育馆"));
            concertList.add(new Concert(13,"2019-7-13","马来西亚-云顶云星剧场"));
            concertList.add(new Concert(14,"2019-7-14","马来西亚-云顶云星剧场"));
            concertList.add(new Concert(15,"2019-7-26","大连-大连体育中心体育馆"));
            concertList.add(new Concert(16,"2019-8-17","重庆-华熙文化体育中心"));
            concertList.add(new Concert(17,"2019-11-16","佛山-国际体育文化演艺中心"));
            concertList.add(new Concert(18,"2019-11-23","宁波-奥体中心体育馆"));
            concertList.add(new Concert(19,"2019-11-30","长沙-国际会展中心"));
            concertList.add(new Concert(20,"2019-12-14","上海-梅赛德斯奔驰体育中心"));
            concertList.add(new Concert(21,"2019-12-15","上海-梅赛德斯奔驰体育中心"));
            concertList.add(new Concert(22,"2019-12-22","沈阳-辽宁省体育馆"));
        } else if(year.equals("2020")) {
            concertList.add(new Concert(23,"2020-01-01","无锡-无锡市体育馆"));
            concertList.add(new Concert(24,"2020-04-28","英国-伦敦皇家阿尔伯特音乐厅"));
        }
        return concertList;
    }

    public String toString() {
        return "第"+this.num+"场 - " + this.time + " :    " + this.region + "\n";
    }
}

2, con el fin de implementar una clase de servlet de Java

En el proyecto del directorio src , crear una nueva clase debe heredar YearQueryServlet HttpServlet, y reemplazar el método doPost ( no deje super.doPost (req, respectivamente); esta afirmación ). Y obtener información del modelo Concert.java, se pasa a la página JSP de la vista.

import javax.servlet.RequestDispatcher;
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.util.List;

public class YearQueryServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        /* 从模型获取答案*/
        String year = req.getParameter("year");  //从请求的信息(表单)内,找到name属性为year的表单,并获取用户提交的结果
        Concert concert = new Concert();
        List ans = concert.getConcertList(year);

        /* 将模型组件的贵大增加到请求对象 */
        req.setAttribute("styles", ans);  //为请求对象增加一个属性,其值为ans,供给jsp使用
        RequestDispatcher view = req.getRequestDispatcher("YearQueryResult.jsp"); //为jsp实例化一个请求分派器
        view.forward(req, resp); //使用请求分派器要求容器准备好jsp,并向jsp发送请求和响应
    }
}

El servlet posición heredada clase Java HttpServlet complemento correspondiente a la clase de servlet:

<!-- 当收到请求时,要调用的Java类的相对路径(相对classes文件) -->
<servlet-class>YearQueryServlet</servlet-class>

 Nota: No haber escrito archivo de vista "YearQueryResult.jsp", acaba de construir un servlet utilizando el modelo y los resultados vienen puente de transferencia de archivos JSP.

En este punto y, a continuación, ejecutar el programa, sólo tiene que seleccionar un año y enviar el formulario. Puede ver un error 404, la página de error como se describe en detalle: /JeffChang%20Concert/YearQueryResult.jsp , es decir, no encontrar los archivos correspondientes Vista JSP. bien, que el puente ha sido construido con éxito, pero la falta de archivos de una vista JSP.


En cuarto lugar, implementar el archivo de vista JSP correspondiente

JSP para crear un archivo en el directorio web del proyecto - YearQueryResult.jsp archivo. Tenemos que volver atrás y código de la vista está escrito:

Precedida por recalcado: JSP es la página real html y luego insertar un código java . código Java en el momento de la escritura, se escribe el símbolo <%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JeffChang's Concert</title>
</head>
<body>
<h1 align="center">张信哲第11轮世界巡回演唱会 - 未来式</h1>
<p>
    <%
        List styles = (List)request.getAttribute("styles");  //从请求对象得到一个属性(就是答案)
        /* 将结果显示在网页上 */
        Iterator it = styles.iterator();
        while (it.hasNext())
            out.println(it.next() + "<br>");
    %>
</p>
</body>
</html>

Este directorio de archivo de elemento de la siguiente manera: 


Un simple programa de MVC es completa, simplemente siguiente prueba:

Correr en dirección opuesta al -

2018,2019,2020 se suministran respectivamente forma los siguientes resultados:

sí! Está hecho -

 



fin 

Sin atención personal bienvenida al público " alitas de pollo Programación" , aquí es un código agrícola seria y de buen comportamiento.

---- haga lo er blogs más buen comportamiento, hacer el programador más sólida ----

Objetivos para escribir cuidadosamente cada artículo, por lo general agregados en notas empujará actualizaciones -

Aquí Insertar imagen Descripción

 

Publicados 138 artículos originales · ganado elogios 63 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_43787043/article/details/104604359
Recomendado
Clasificación