Servlet e JSP | 3: projetos de desenvolvimento MVC sob a idéia

 

anuário

padrão Servlet e JSP MVC no mundo:

Primeiro, crie um projeto JavaWeb, página html completa

1. Crie um projeto 

2, equipa da casa, a preparação 

Em segundo lugar, o arquivo de configuração web.xml, url mapeada para o servlet

Em terceiro lugar, implementar uma classe de servlet Java

1, crie um modelo do servlet

2, a fim de implementar uma classe de servlet Java

Em quarto lugar, implementar o correspondente arquivo de exibição JSP

fim 



padrão Servlet e JSP MVC no mundo:

Servlet no controlador (controle), vista de exibição JSP (vista), plain aulas de modelo Java (modelo).

Atrás de cada um destes serviços (+ pedido de resposta), ele deve ser um MVC modo fórmula:

Mais específico:

Um questões usuário uma solicitação do navegador, é transmitido para o servidor web através do protocolo HTTP, que é uma solicitação de descoberta dinâmica servidor web, ele irá processar a solicitação para recipiente tomcat. tomcat recipiente para encontrar o arquivo a instrução correspondente servlet .class, iniciará suas funções de serviço () é executado. No decorrer desta operação será chamado modelo de classe Java para alcançar o pedido passarão, e os resultados transmitidos a um pedido através do arquivo JSP, este acabará tomcat página jsp através do vaso retornado ao usuário.


Este artigo irá criar uma forma muito simples aplicações JavaWeb, principalmente para começar familiarizado com o padrão MVC de projetos de desenvolvimento sob o ambiente ideia de desenvolvimento. A principal Nota: Na componente Tomcat Servlet e JSP gestão de contentores, como é que vamos implantar um aplicativo.

Nota: jsp é a página html real e, em seguida, inserir um código java, é isso! 


Primeiro, crie um projeto JavaWeb, página html completa

1. Crie um projeto 

Primeiro de tudo, o direito de criar um novo projeto no ideia JavaWeb, chamado Concerto de JeffChang. operações específicas pode se referir a: IDEA um JavaWeb item de configuração

O projeto é usado principalmente para consulta informações Jeff Chang primeiro 11 World Tour, a casa vai ter uma forma para selecionar o ano, depois que os submete usuário da página de resultados de formulário irá aparecer, informando ao usuário que informação o concerto com a cidade durante o ano. Tão legal!

2, equipa da casa, a preparação 

Modificar o index.jsp arquivo (esta é a página padrão do nosso projeto), como segue:

<%@ 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>

Depois de escrito, prazo direto para ver se há errado. página Web deverá aparecer da seguinte forma:

 

A Escolha de um ano para enviar o formulário, haverá 404 ❗. Porque nós não percebemos os pontos de atributo action do formulário para o servlet, então quando você enviar o formulário, tomcat vai passar o seu pedido ao atributo ação aponta para o servlet, mas não pode encontrar, por isso há 404.


Em segundo lugar, o arquivo de configuração web.xml, url mapeada para o servlet

arquivo web.xml é um arquivo de implantação tomcat recipiente. Quando um usuário envia uma solicitação para o URL é passado um servidor Web, o URL deve ser mapeado para um servlet especial para responder em conformidade, tomcat.

código de arquivo web.xml é a seguinte:

<?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>

Observe que o servlet-class não vai aderir, porque não temos escrito correspondência classe servlet --Java. Ele será adicionado mais tarde.

Neste caso, executá-lo, basta escolher um tempo, tente enviar o formulário:

500 neste momento vai reclamar, mas não antes do 404! Porque temos implantado url servlet e mapeamento, mas isso não tem sido alcançado uma classe servlet java ~


Em terceiro lugar, implementar uma classe de servlet Java

1, crie um modelo do servlet

MVC, o que representa o modelo de H, um grupo de back-end código Java puro . A classe servlet Java para chamar este modelo é implementado para calcular o pedido enviado para o usuário, para dar os resultados correspondentes . Então, você quer implementar uma classe de servlet Java, ele deve implementar um modelo correspondente.

No projeto diretório src , crie um novo concerto de classe, ea implementação de um 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, a fim de implementar uma classe de servlet Java

No projeto diretório src , criar uma nova classe YearQueryServlet deve herdar HttpServlet, e substituir o método doPost ( não deixe super.doPost (req, respectivamente); esta afirmação ). E obter informações a partir do modelo Concert.java, passou para a página da vista jsp.

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发送请求和响应
    }
}

O Servlet posição herdada correspondente classe Java HttpServlet complemento para o servlet-class:

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

 Nota: Não não ter escrito "YearQueryResult.jsp" arquivo de exibição, basta construir um servlet usando o modelo e os resultados vêm ponte de transferência de arquivos jsp.

Neste ponto, e depois executar o programa, basta selecionar um ano e enviar o formulário. Pode ver um erro 404, a página de erro, conforme descrito em detalhe: /JeffChang%20Concert/YearQueryResult.jsp , não ou seja, encontrar os arquivos correspondentes jsp vista. ok, essa ponte que foi construída com sucesso, mas a falta de arquivos de uma vista jsp.


Em quarto lugar, implementar o correspondente arquivo de exibição JSP

Jsp para criar um arquivo no diretório web do projeto - arquivo YearQueryResult.jsp. Precisamos voltar e código de exibição está escrito:

Precedido por enfatizou: JSP é a página html real e insira um código java . código Java no momento da escrita, podemos escrever o 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 diretório arquivo do item da seguinte forma: 


Um programa MVC simples é concluída, simplesmente seguinte teste:

Executar diretamente para fora do -

2018,2019,2020 são respectivamente fornecidos forma os seguintes resultados:

yeah! Ele é feito -

 



fim 

Nenhuma atenção pessoal bem-vindos ao público " asas de frango Programação" , aqui está um código de um agrícola séria e bem-comportado.

---- fazer o er de blog mais bem-comportado, faça o programador mais sólida ----

Objectivos para escrever com cuidado cada artigo, geralmente agregadas em notas vai empurrar atualizações -

Aqui Insert Picture Descrição

 

Publicado 138 artigos originais · ganhou elogios 63 · vê 10000 +

Acho que você gosta

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