Eu sempre usei SSH. Como a empresa deseja usar o SpringMVC, nunca fui exposto a ela antes, então hoje vou aprender essa estrutura com você para que eu possa fazer meu trabalho.
Primeiro de tudo, vamos entender o que é um padrão. O padrão é a metodologia de resolver um certo tipo de problema e resumir as soluções para esse tipo de problema para o nível teórico. Este é o padrão. Os padrões são um guia que ajuda os desenvolvedores a concluir tarefas sob uma boa orientação. Fazer um excelente plano de design pode alcançar o dobro do resultado com metade do esforço. E você obterá a melhor solução para o problema.
O padrão MVC se originou da linguagem SmallTalk, que é a abreviação do controlador de visualização de modelo. O MVC enfraquece o acoplamento entre a interface lógica de negócios e a interface de dados. Existem muitos benefícios do uso do modo MVC, como forte confiabilidade, alta reutilização e adaptabilidade, baixo custo do ciclo de vida, implantação rápida, manutenção forte etc. Não vou explicar muito sobre os detalhes aqui.
Recursos de Springmvc:
1. Divisão de função clara. A primavera fornece uma divisão muito clara em modelo, visualização e controlador. Esses três aspectos são realmente realizados e cada um assume suas responsabilidades.
2. Função de configuração flexível, porque o núcleo da Spring é o COI e, na implementação do MVC, várias classes também podem ser configuradas através do XML como feijão.
3. Forneça um grande número de interfaces e classes de implementação do controlador, para que os desenvolvedores possam usar as classes de implementação do controlador fornecidas pela primavera ou implementar a própria interface do controlador.
4. Springmvc é um verdadeiro independente da implementação da camada de visão. Não forçará os desenvolvedores a usar o JSP. Podemos usar outras tecnologias de visualização, como velocidade, xskt, etc.
5. Apoio à internacionalização. O ApplicationContext da Spring fornece suporte à internacionalização, que pode ser usada de maneira muito conveniente aqui.
6. Programação orientada para interface. De fato, esse não é apenas um recurso do SpringMVC. Do ponto de vista da primavera, esse recurso é muito óbvio porque facilita para os desenvolvedores testar programas e gerenciá -los com facilidade.
7. O Spring fornece um conjunto completo de processos para o desenvolvimento de aplicativos da Web, não apenas o MVC, que pode ser facilmente combinado. Abaixo está um exemplo de como eu mesmo fiz isso. Depois de terminar este exemplo, eu realmente percebi o poder do SpringMVC.
Vamos começar a configurar nosso projeto Springmvc:
Primeiro, configuramos web.xml no diretório da web-inf:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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> http://java.sun.com/xmls/javaee> http://java.sun.com/xmls/javaee> O DispatcheserServlet, que controla o caminho de solicitação de toda a página-> <Verlet-name> DispatcheserServlet </Servlet-Name> <Servlet-Class> org.springframework.web.servlet.dispatherservlet </servlet-class> <!! ContextConfigLocation-> <amam-name> contextConfigLocation </param-name> <amam-value> /web-inf/classes/applicationcontext.xml </am Param-value> </init-param> <adarot-on-startup> 2 </load-startup> </serletlet> <!-interception All Solterns <Verlet-Nome> DispatcheserServlet </vetlet-name> <url-tattern>*. do </url-tattern> </servlet-mapping> <!-lida com problemas chineses que ocorrem ao passar chineses da página para o fundo-> <filter> <filter-Name> codingfilter </filtroname> <filter-class> org.springframework.web.filter.characterencodingFilter </filter-Class> <iit-param> <amam-name> Encoding </amam-name> </param-name> utf-8 </param-value> </irit-param> </filter-mapping> <lame-name> <url-pattern>/*</url-tattern> </filter-Mapping> <lden-Welcome-File-List> <ldengre-File> index.jsp </weld-File>
Depois de configurar um arquivo sempre, recomenda -se iniciar o servidor primeiro para ver se ocorre uma exceção, caso contrário, será difícil depurar e encontrar a exceção no estágio posterior.
Depois que o web.xml é configurado, precisamos criar um arquivo de db-config.properties no diretório SRC para armazenar nossas informações de configuração de fonte de dados:
O conteúdo é o seguinte:
db.url = jdbc: mysql: /// springmvcdb? useUnicode = true & caracterEncoding = utf8db.username = rootdb.password = rootdb.dirverclass = com.mysql.jdbc.driver
Após a configuração do db-config.properties, comece a configurar o arquivo ApplicationContext.xml:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xsi: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-bans-2.5.xd"> <!-define um controle default adaptador-> > <Propriedade name = "Localizações"> <List> <Value> ClassPath: db-config.properties </value> </list> </property> </bean> <!-Get Data Source-> <bean id = "DataSource"> <Nome da propriedade = "DriverclassName"> <Value> $ {DB.Dirverc. <Value> $ {db.url} </value> </property> <propriedade name = "nome de usuário"> <value> $ {db.username} </value> </property> <names name = "senha"> <taluse> $ {db.password} </value> </property> </bEan> <!- url para o url para o que é magro. Endereços de arquivo do programa e o valor é o nome do feijão do processador. O endereço do arquivo do programa de URL pode adotar um padrão de correspondência de caminho, como: com/mvc/t? St.jsp: corresponde a/mvc/test.jsp, com/mvc/tast.jsp, etc. com/mvc /* /*.jsp: path: todos os URLs com o sufixo JSP sob com/mvc/mv // **/test.jsp: path.jsp: path.jsp. com/mvc /**/*.jsp: combine todos os URLs com os sufixos .jsp no caminho COM/MVC ou no caminho descendente CN/**/web/bla.jsp: Match Solicitações para CN/Option/Web/Dog.jsp Cn/Option/Test/Web/Dog.jsp Cn/Web.jsp Cnsp Cn /.jsp Cn/Option/Web/Dog.jsp cn/Web.jsp cn/cn /.jsp /.jsp /.jp cn/web/web/web) user.do=userAction </value> </property> </bean> <!--Definition view is used through internalResourceView to indicate that Servlet/jsp technology is used--> <bean id="viewResolver" > <property name="viewClass"> <value>org.springframework.web.servlet.view.InternalResourceView </value> </property> <!-- directory stored in jsp-> <propriedade name = "prefixo"> <value>/jsp/</value> </propriedade> <!-Definição do sufixo do sufixo-> <propriedade name = "sufix"> <Value> .jsp </value> </propriedade> </bean> <bean id = "userdao"> <propriedades> </datasurce "refsouras = data =" userdao "> controller--> <bean id="userAction"> <property name="dao"> <ref bean="userDao"/> </property> <property name="commandClass"> <value>com.yjde.springmvc.UserDao</value> </property> <property name="viewpage"> <value>userInfo</value> </property> </beans>Depois que o arquivo ApplicationContext.xml estiver configurado, começamos a escrever classes Java específicas. Precisamos de uma classe Dao, uma classe de controlador e um PO
Criamos uma tabela Usermbo em MySQL, que possui três campos userID, nome de usuário, usuário
Classe Userdao:
pacote com.yjde.springmvc; importar java.sql.resultset; importar java.sql.sqLexception; importar java.util.Collection; importar java.util.list; importar org.springframework.jdbc.core.rowmapper; importar org.springframework.jdbc.core.support.jdbcdaosupport; @Suppresswarnings ("All") Public class Userdao estende JDBCDAOSUPPORT {private String msg; public String getMsg () {return msg; } public void setmsg (string msg) {this.msg = msg; } // Este método consulta os campos correspondentes à tabela Usembo e os coloca no userpo na sequência public coleciona <aseserpo> doquery () {string sql = "selecione t.userId, t.username, t.USERAGERA FROM UserMBO T"; retornar super.getjdbctemplate (). Query (sql, new Rowmapper () {public Object maprow (ResultSet rs, int num) lança sqlexception {userpo user = new userpo (); user.setUserId (rs.getInt (userId "); user.setUsERAGE (Rs.getInt ("Useragem"); }}JDBCTemplate é a classe principal do pacote principal. Ele faz a criação e liberação de recursos para nós, simplificando assim o uso do JDBC. Também pode nos ajudar a evitar erros comuns, como esquecer de fechar a conexão do banco de dados. Para detalhes, consulte a API
Classe de controlador:
pacote com.yjde.springmvc; importar java.io.printwriter; importar java.util.arraylist; importar java.util.Collection; importar java.util.hashmap; importar java.util.list; importar java.util.map; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar org.springframework.validation.bindexception; importar org.springframework.web.servlet.modelandView; importar org.springframework.web.servlet.mvc.simpleFormController; @Suppresswarnings ("All") // SimpleFormController é um controlador de formulário fornecido pela primavera. Ele define o nome do elemento no formulário na página para o mesmo que no feijão. Quando aprovado, a primavera agarrará automaticamente o valor do elemento do mesmo que o nome do feijão no formulário e o converterá em um feijão, para que os desenvolvedores possam usá -lo de maneira muito conveniente. classe pública UserController estende SimpleFormController {private String ViewPage; Userdao privado dao; public String getViewPage () {return viewPage; } public void setViewPage (String ViewPage) {this.ViewPage = ViewPage; } @Override ModelAndView Protected OnSubMIT (Solicitação HttpServletRequest, Resposta HttpServletResponse, Comando Objeto, Erros de BindException) lança exceção {Userdao tmp = (userDao); Coleção <SuserPo> list = dao.doQuery (); Lista <SuserPo> usuários = new ArrayList <SuperPo> (); Usuário userpo; para (userpo userpo: list) {user = new userpo (); user.setUserID (userpo.getUserId ()); user.setUserName (userpo.getUserName ()); user.setUSERAGE (userpo.getUserAge ()); usuários.add (usuário); } Mapa mp = new hashmap (); mp.put ("list", usuários); retornar new ModelAndView (getViewPage (), MP); } public void setDao (userdao dao) {this.dao = dao; }} pacote com.yjde.springmvc; classe pública userpo {private Integer UserID; Nome de usuário privado de string; Usuário inteiro privado; public integer getUserId () {return userID; } public void setUserID (Inteiro UserID) {this.UserID = UserID; } public string getUserName () {return userName; } public void setUserName (string userName) {this.username = nome de usuário; } public integer getUserAge () {return userage; } public void setUserAge (usuário inteiro) {this.UserAge = Useragem; }} </pre> <br> <p align = "left"> <span style = "cor: teal"> Depois que a criação da classe for concluída, escreveremos dois </span> <span style = "cor: teal"> jsp </span <span style = "cor: teal"> test: </span> </p> <p align = "Left =" style = "cor: teal"> index.jsp: </span> </p> <p align = "left"> <span style = "cor:#bf5f3f"> </span> </p> <pre nome = "code"> <%@ página linguagem = "java" import = "java.util.*" Page "@ Page String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitória // pt"> <html> <head> <base href = "<%= Basepath%>"> <title> meu jsp 'index.jsp' página </title> <meta-http-mequiv "> http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, keyword2, palavra-chave"> <magle http-equiv = "descrição" "content1, keyword2, palavra-chave"> <magle http-ouquiv = "descrição" " type = "text/css" href = "styles.css"> -> </ad Head> <body> <formulário action = user.do "method =" post "> digite <input name =" msg "type =" text "/> <input type =" submit "value =" submit "> </forma </corpora" </" style = "cor: teal"> </span> </p> <p align = "left"> <span style = "cor: teal"> resultado final da execução: </span> </p> <p align = "left"> <span style = "cor: teal"> <img src = "http://my.csdn.net/uploads/201204/24/1335237733_4732.png"> </span> </p> <p align = "esquerd"> <span = "color: tal"> tabela de dados da tabela de dados: </spann </spann) style = "cor:#008080"> </span> </p> <pre nome = "code">/* Navicat MySQL Transferência de dados servidor de origem: MySQL Servidor de origem versão: 50145 Host: mySql-HOST: 3306 FIGO ORIGE */ Set estrago_key_checks = 0; -------------------- Criar tabela `Usermbo` (` userID` int (11) não nulo padrão '0', `nome de usuário` Varchar (50) NULL padrão,` userAge` int (11) nulo padrão, chave primária (`userid`)) mecan -------------------- Inserir em `usermbo` valores ('2', '柳梦璃', '27'); Inserir em `usermbo` valores ('3', '' ',' 26 '); </pre> Exemplo de download: demonstração
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.