Em um futuro próximo, a empresa desenvolverá novos projetos e usará a estrutura Struts2+mybatis+spring. Então, depois de aprender, vou postar no meu blog, na esperança de ajudá -lo!
Realiza principalmente as operações de adição, exclusão, modificação e pesquisa do usuário
1. Importe o pacote JAR correspondente
2. Configurando o web.xml configura principalmente o struts2 e a primavera
O conteúdo do arquivo web.xml é o seguinte:
<?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/web-web-23 <ldenm-File> index.jsp </ld-Welcome-file> </l-Welcome-File-List> <!-Carregando o arquivo de configuração da mola-> <Ilvier> <lister-class> org.springframework.web.context.contextloaderListener </lister-class> </ouvinte> <!-Configurar o local da primavera do spring of spring of spring of spring of spring of spring of spring of spring of spring of spring lounding lounding lounding </ouvinte> <! <amam-name> contextConfigLocation </param-name> <amam-value> classPath: beans.xml </param-value> </context--param> <!-configure struts2-> <filter> <filter-Name> struts2 </filter-name> <filtro-class> .APACHACACACACTS2.DISPACTCHER.NG.FILTER.STRUTSPROPARENDEXecUteFilter </filter-class> </filter> <filter-mappppe> <filter-name> struts2 </filter-name> <url-Pattern>/*</url-tattern> </filter-mapppê> <sicm appicm> <Battern>/*</url-tattern> </filter-mapppê>
3. Configure arquivos de configuração de mola, incluindo principalmente configuração de fontes de dados, transações, mybaits etc.
O arquivo de configuração Beans.xml é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-Configure os grãos com comentários-> <Contexto: anotação-config /> <!-Configure o pacote a ser digitalizado-> <Contexto: componente-Scan Base-Package = "com.pdsu.edu"> < /context: CGLIB: FALMOT AULTOMAT AUMPROT-STRING-AURTOT: O uso do CGLIB: se seleto: o uso do CGLIB: se seleto: o uso do CGLIB: se seleto: o uso do CGLIB: se seleto: "-AUTOPUT: CGLIB: se seleto: o proxt-target-class ="> Proxy-Target-Class = "true" /> <!-Localização do arquivo de configuração do banco de dados-> <Contexto: Property-placeholder Location = "ClassPath: jdbc.properties" /> <!-Configure dbcp Data Source-> <Bean id = "DataSource" /> <propriedade name = "url" value = "$ {jdbc.url}" /> <propriedade name = "nome de usuário" value = "$ {jdbc.username}" /> <names name = "senha" value = "$ {jdbc.password" /> <!-Minimum Weeping Hora da fila-> value = "$ {jdbc.minidle}"> </propriedade> <!-Tempo máximo de espera em milissegundos-> <propriedade name = "maxwait" value = "$ {jdbc.maxwait}"> </propriedade> <!-maximum norma-> <names de propriedade "<) </value ="> </propriedade> <! name = "InitialSize" value = "$ {jdbc.initialsize}"> </ouse> </i bean> <!-Configure mybitassqlsessionFactoryBean-> <bean id = "sqlSessionFactory"> <nome da propriedade = "DataSource" Ref = "DataSource"/> <name "/" value = "Classpath: mybatis.xml"> </propriedade> </bean> <!-configure sqlsessionTemplate-> <bean id = "sqlsessionTemplate"> <construtor-arg name = "SQLSessionFactory" Reférito "SQLSessionFactory"/<! name = "DataSource" ref = "DataSource"/> </ Bean> <!-Configurar transações usando anotação anotação-> <tx: transação orientada por anotação-manager = "transactionManager"/> </ Beans> 4. Detalhes do arquivo de configuração JDBC
jdbc.driverclassName = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // localhost: 3306/operação jdbc.username = raiz jdbc.password = jdb.maxactive = 2 jdc.Maxidle = 3 jdbc.maxwait = 3000
5. Configure o arquivo de configuração principal do Mybatis:
<? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtddddtdddddtdis.org/dtd/mybatis-3-config.dtdddddtdddddtdis" type = "com.pdsu.edu.domain.user"/> </typeAliases> <Mappers> <mapper Resource = "com/pdsu/edu/domain/sqlmappers/user.xml"/> </mappers> </figature>
6. Configurar o arquivo user.xml
<? xml versão = "1.0" coding = "utf-8"?> <! <ResultMap type = "com.pdsu.edu.domain.user" id = "userResult"> <resultado de propriedade = "id" column = "id" jdbctype = "integer" javatype = "java.lang.integer" /> result ("result =" username "column =" username " /> <sould) /" result = "username" ("username" /> <bult> <stername) id = "userLogin" parameterType = "user" resultmap = "userResult"> selecione * do usuário onde o nome de usuário =#{nome de usuário} e senha =#{senha} </select> <select Id = "selectAlUser" resultMap = "userResult"> select * do usuário </select> <idi "finftHuRy" FindUsMap = "userResult"> * de user </select> <idi "" Finalizer " Selecione * do usuário em que id =#{id} </select> <insert id = "insertUser" parametertype = "user"> <! [CDATA [insira no usuário (nome de usuário, senha) valores (#{userrame},#{senha})]]> </insert> <update id = "updateSer" Parâmetro " nome de usuário =#{nome de usuário}, senha =#{senha} onde id =#{id} </update> <delete id = "deleteuser" parameterType = "int"> exclua do usuário onde id =#{id} </lete> 7. Como escrever entidade do usuário
classe pública o usuário implementa serializável {private estático final serialversionuid = -4415990281535582814l; ID inteiro privado; Nome de usuário privado de string; senha de sequência privada; public integer getId () {return id; } public void SetId (ID inteiro) {this.id = id; } public string getUserName () {return userName; } public void setUserName (string userName) {this.username = nome de usuário; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } @Override public string tostring () {return "user [id =" + id + ", senha =" + senha + ", nome de usuário =" + nome de usuário + "]"; } @Override public int hashCode () {final int prime = 31; int resultado = 1; resultado = prime * resultado + ((id == null)? 0: id.hashcode ()); resultado de retorno; } @Override public boolean equals (object obj) {if (this == obj) retorna true; if (obj == null) retorna false; if (getClass ()! = obj.getclass ()) retornar false; Usuário outro = (usuário) obj; if (id == null) {if (other.id! = null) retorna false; } else if (! id.equals (outros.id)) retorna false; retornar true; }} 8. Como escrever Userdao
interface pública userdao {public abstract void insertUser (usuário do usuário); Public Resumo Void UpdateUser (usuário do usuário); Resumo público Void DeleteUser (Inteiro UserID); Public Abstract User FindUserById (Inteiro UserID); Lista de resumo público <suário> findAll (); Public Resumo UserLogin Usuário (usuário do usuário); } 9. Implementação de Userdao
@Repository public class UserdaoImpl implementa Userdao {private final String insert_user = "insertUser"; private final string update_user = "updateUser"; String final privada delete_user = "DeleteUser"; String final privada find_user_byid = "findUserbyId"; String final privada select_all_user = "SelectAllUser"; String final privada User_login = "UserLogin"; @AUTOWIRED SQLSessionTemplate sqlSessionTemplate; public void insertUser (usuário do usuário) {sqlsessionTemplate.insert (insert_user, usuário); } public void updateUser (usuário do usuário) {sqlsessionTemplate.UpDate (update_user, usuário); } public void DeleteUser (Inteiro UserID) {SQLSessionTemplate.Delete (Delete_User, UserID); } usuário público findUserById (Inteiro UserID) {return sqlSessionTemplate.SelectOne (find_user_byid, userID); } list public <suser> findAll () {return sqlSessionTemplate.SelectList (select_all_user); } usuário público usuárioLogin (usuário do usuário) {return sqlsessionTemplate.SelectOne (user_login, usuário); }} 10. Interface do UserService
interface pública UserService {// Adicione o usuário public abstrato void adduser (usuário do usuário); Public Resumo Void UpdateUser (usuário do usuário); Resumo público Void DeleteUser (Inteiro UserID); Public Abstract User FindUserById (Inteiro UserID); Lista de Resumo Público <suário> findAlLUser (); Login público de usuário abstrato (usuário do usuário); } 11. Implementação da interface do UserService
@Service @Transaction Public Class UserServiceImpl implementa UserService {@AUTOWIRED PRIVADO UserDAO Userdao; // Adicione o usuário public void addUser (usuário do usuário) {userdao.insertUser (usuário); } // Atualize o usuário public void updateUser (usuário do usuário) {userdao.updateUser (usuário); } public void DeleteUser (Inteiro UserID) {userdao.DeleteUser (UserID); } usuário público findUserById (Inteiro UserID) {return userdao.finduserById (userID); } list public <suser> findAllUser () {return userdao.findall (); } Login público do usuário (usuário do usuário) {return userdao.userLogin (usuário); }} 12. Configure o Struts2
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype suporta public "-// Apache Software Foundation // DTD Struts Configuration 2.1 // pt" "http://struts.apache.org/dts/stuts-2.1.dt1" value = "utf-8"/> <!-Especifique o conjunto de codificação padrão, que é usado no setCharacterencoding () e no FreeMarker de httpServletRequest, e a saída de vilocity-> <constant name = "struts.configuration.xmlReload" value = "reúna"/>/> <! name = "struts.devmode" value = "true"/> <!-Imprima informações detalhadas de erro no modo de desenvolvimento-> <nome constante = "struts.ui.theMe" value = "xhtml"/> <package name = "user" namesace = "/user" estends = "struts-default"> name = "user" "" "" type="redirectAction">user_queryAllUser.action</result> <result name="input">/index.jsp</result> <result name="userList">/userList.jsp</result> <result name="addUser">/userAdd.jsp</result> <result name="updateUser">/userUpdate.jsp</result> </action> </package> </struts>
13. Implementação específica do usuário
@Controller @Scope ("Prototype") Public Class UserAction estende o ActionApport {@AUTOWIRED PRIVADO UserService UserService; usuário privado usuário; Lista privada <suser> userlist; public string execute () lança exceção {return null; } public string Login () {if (user! = null) {user user2 = userservice.login (usuário); if (user2! = null) {return Success; }} this.addfielderror ("user.username", "erro em nome de usuário ou senha!"); retornar entrada; } public string addui () {return "adduser"; } public string updateUi () {user = userService.findUserById (user.getId ()); retornar "updateUser"; } public string add () {userservice.adduser (usuário); sucesso de sucesso; } public string delete () {userservice.deleteUser (user.getId ()); sucesso de sucesso; } public string update () {userservice.updateUser (usuário); sucesso de sucesso; } usuário público getUser () {return user; } public void SetUser (usuário do usuário) {this.User = user; } public string queryallUser () {userList = userservice.findallUser (); retornar "UserList"; } list public <suser> getUserList () {return userlist; } public void setUserList (list <suser> userList) {this.UserList = userList; }} 14. Implementação da página de login
<%@ Page Language = "java" import = "java.util. String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitório // pt"> <html> <head> <base href = "<%= basepath%>"> <title> login do usuário </title> <meta-http-ouquiv = "metagma" contention = " 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"> -> <s: head/> </head> <body> <stent> <h1> login do usuário </h1> <s: a action = "user_addui" namesace = "/user"> add um novo usuário </s: a> <s: formaction "" user_og ""/user "> user (s: Rótulo = "Nome de usuário" name = "user.username"> </s: textfield> <s: senha etc. "senha" name = "user.password"> </s: senha> <s: submit value = "login"> </s: submit> </s: form> </central> </body> </html>
15. Adicione uma página
<%@ página de página = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <! Usuário </title> <meta http-equiv = "PRAGMA" content = "no-cache"> <meta http-equiv = "cache-CONTROL" content = "no-cache"> <meta http-equiv = "expire" content = "0"> </head> <Fodle> <Centr> <H1> namespace = "/user" método = "post"> <s: textfield etc.
16. Modifique a página
<%@ página de página = "java" import = "java.util. Usuário </title> <meta http-equiv = "PRAGMA" content = "no-cache"> <meta http-equiv = "cache-CONTROL" content = "no-cache"> <meta http-equiv = "expire" content = "0"> </head> <body> <Centro> <H1> Modify = Modify "Usuário"/"> </corpo> <Center> <H1> Modify =" Modify "/" 0,10) Namesace = "/User" Method = "Post"> <S: Hidden Name = "User.id"> </s: Hidden> <S: TextField Label = "UserName" Name = "User.UserName"> </S: Textfield> <S: Submin: "senha" senha "Nome =" User.Password "> </S: </Subster: Subster:" senha " </body> </html>
17. Página de lista
<%@ Page Language = "java" import = "java.util. LIST </ititle> <meta http-equiv = "PRAGMA" content = "no-cache"> <meta http-equiv = "cache-CONTROL" content = "no-cache"> <meta http-equiv = "expire" content = "0" </head> <body> <cent> <h2> usuário lista "usuário" Namespace = "/Usuário"> Adicione um novo usuário </s: a> </h3> <table> <tr> <th> ID do usuário </th> <th> Nome de usuário </th> <th> senha do usuário </th> <th> operação </th> </thily): "iderator value =" userlist "> <tr> <t> <s: propriedades <swerator Value =" Userlist "> <tr> <t> <s: value="username"/> </td> <td><s:property value="password"/> </td> <td><s:a action="user_updateUI" namespace="/user"><s:param name="user.id">${id}</s:param>Modify</s:a> <s:a action="user_delete" namespace = "/user"> <s: param name = "user.id"> $ {id} </s: param> excluir </s: a> </td> </tr> </s: iterator>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.