Dans un avenir proche, l'entreprise développera de nouveaux projets et utilisera le cadre Struts2 + Mybatis + Spring. Donc, après l'avoir appris, je le publierai sur mon blog, dans l'espoir de vous aider!
Réalise principalement les opérations d'addition, de suppression, de modification et de recherche des utilisateurs
1. Importez le package JAR correspondant
2. Configuration de web.xml configure principalement Struts2 et Spring
Le contenu du fichier web.xml est le suivant:
<? 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/xml/ns/javaee/web-app_2_5.xsd"> <l bien-être-List> <Lela Welcome-File> index.jsp </ bienvenue-file> </ welcome-file-list> <! - Chargement du fichier de configuration de Spring -> <ouciner> <écouteur-class> org.springframework.web.context.contextLoaderListener </ écouteur-class> </ auditeur> <! - Configurez l'emplacement du chargement de file de configuration de printemps -> < <param-name> ContextConfiglocation </ Param-name> <Am param-Value> ClassPath: Beans.xml </ Param-Value> </ftext-Param> <! - Configurez Struts2 -> <filter> <Filter-Name> Struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.strutSprepareAndexECuteFilter </ Filter-Class> </ Filter> <Imlter-Mapping> <Filter-Name> Struts2 </filter-name> </rl-Pattern> / * </url-Pattern> </filter-mapping> </king-pattern> / * </url-Pattern> </filter-Mapping> </king-Pattern> / * </url-Pattern> </filter-Mapping> </king-Pattern>
3. Configurer les fichiers de configuration de Spring, y compris principalement la configuration des sources de données, des transactions, des mybaits, etc.
Le fichier de configuration bean.xml est le suivant:
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframeworkwork.org/schema/tx" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springframeworks-3.0.xsd http://www.springframework.org/schema/aoph 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.xsdd 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. Commentaires -> <Context: Annotation-Config /> <! - Configurez le package à analyser -> <Context: Component-Scan Base-Package = "com.pdsu.edu"> </ Context: Component-Scan> <! - Proxy-Target-Class = "True" Force l'utilisation de CGLIB Proxy If False, Spring sera automatique Proxy-Target-Class = "true" /> <! - Database Configuration Fichier Emplacement du fichier -> <Context: Property-placeholder location = "ClassPath: JDBC.Properties" /> <! - Configurer DBCP Data Source -> <Bean Id = "DataSource" Destren-Method = "close"> <propriété Name = "DriverClassname" Value = "$ {JDBC.Diver Name =" DriverClass "Value =" $ {JDBC.Diver. /> <propriété name = "url" value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.Username}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> <! - Minimum Wiet Time in the Queue -> <propriété name = "minIdle" Value = "$ {jdbc.minidle}"> </ propriété> <! - Temps d'attente maximum en millisecondes -> <propriété name = "maxwait" value = "$ {jdbc.maxwait}"> </ propriété> <! - Numéro actif maximum -> <propriété name = "maxactive" varient " name = "initialSize" value = "$ {jdbc.InitialSize}"> </ propriété> </ bean> <! - Configurez MyBitassQlSessionFactoryBean -> <bean id = "sqlSessionFactory"> <propriété name = "dataSource" Ref = "DataSource" /> <propriété name = "Configlocation" Value = "ClassPath: mybatis.xml"> </ propriété> </ bean> <! - Configurez sqlSessionTemplate -> <bean id = "SqlSessionTemplate"> <Constructor-arg name = "SQLSessionFactory" Ref = "SQLSessionFactory" /> </Ean> <! - Configuration de transaction -> <Ebraction Id = "TransactionMer"> </ Bean> <! - Configuration de transaction -> < name = "dataSource" ref = "dataSource" /> </ bean> <! - Configurez les transactions à l'aide de l'annotation annotation -> <tx: transaction-manager = "transactionmanager" /> </bans> 4. Détails du fichier de configuration JDBC
jdbc.DriverClassName = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // localhost: 3306 / operationlog jdbc.Username = root jdbc.password = jdbc.Maxactive = 2 jdbc.Maxidle = 5 jdbc.MinIdle = 1 JDBC.Maxidle = 5 jdbc. = 3 jdbc.maxwait = 3000
5. Configurez le fichier de configuration principale MyBatis:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3config.dtd"> <configuration> type = "com.pdsu.edu.domain.user" /> </ typealiases> <mappers> <mapper ressource = "com / pdSu / edu / domain / sqlmappers / user.xml" /> </mappers> </ configuration>
6. Configurer le fichier user.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappeur public "- // Mybatis.org//dtd Mappeur 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.pdsU.Domain. <resultmap type = "com.pdsu.edu.domain.user" id = "userresult"> <résultat propriété = "id" column = "id" jdbcType = "Integer" javatype = "java.lang.integer" id = "userLogin" ParameterType = "user" resultMap = "userresult"> sélectionner * à partir de l'utilisateur où username = # {username} et mot de passe = # {mot de passe} </lect> <select id = "selectAlUser" resultMap = "userresult"> SELECT * parmi l'utilisateur </lect> <select id = "finseserbyId" ParamterType = "Intreclap =" Userresult " Sélectionnez * à partir de l'utilisateur où id = # {id} </ select> <insert id = "insertuser" ParameterType = "user"> <! [cdata [insérer dans l'utilisateur (nom d'utilisateur, mot de passe) (# # {username}, # {mot de passe})]]> </ insert> <update id = "updateSer" ParameterType = "user"> Update Sett user set username = # {username}, mot de passe = # {mot de passe} où id = # {id} </dated> <delete id = "DeleteUser" ParameterType = "int"> delete de l'utilisateur où id = # {id} </dendele> </capper> 7. Comment rédiger l'entité utilisateur
La classe publique utilisateur implémente Serializable {private static final long SerialVersionUID = -4415990281535582814l; ID entier privé; Nom d'utilisateur de chaîne privée; mot de passe de chaîne privé; public Integer getID () {return id; } public void setid (INGER ID) {this.id = id; } public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } @Override public String toString () {return "utilisateur [id =" + id + ", mot de passe =" + mot de passe + ", nom d'utilisateur =" + nom d'utilisateur + "]"; } @Override public int hashcode () {final int prime = 31; Int résultat = 1; result = prime * result + ((id == null)? 0: id.hashcode ()); Résultat de retour; } @Override public boolean equals (objet obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; Utilisateur autre = (utilisateur) obj; if (id == null) {if (autre.id! = null) return false; } else if (! id.equals (autre.id)) renvoie false; Retour Vrai; }} 8. Comment écrire UserDao
Interface publique UserDao {public Abstract void Insertuser (utilisateur utilisateur); Public Abstract void UpdateUser (utilisateur utilisateur); Public Abstract void DeleteUser (Integer UserId); L'utilisateur abstrait public finseUserById (Integer UserId); Public Abstract List <ser utilisateur> findall (); UserLogin utilisateur abstrait public (utilisateur utilisateur); } 9. Implémentation de UserDao
@Repository public class userDaoIMPl implémente userdao {private final String insert_user = "inserser"; private final String update_user = "UpdateUser"; String final privé Delete_User = "DeleteUser"; String final privé find_user_byid = "finduserByid"; String final privé select_all_user = "selectAllUser"; String final privé user_login = "userlogin"; @Autowired privé sqlSessionTemplate sqlSessionTemplate; public void insertuser (utilisateur utilisateur) {sqlSessionTemplate.insert (insert_user, utilisateur); } public void UpdateUser (utilisateur utilisateur) {sqlSessionTemplate.update (update_user, utilisateur); } public void DeleteUser (Integer UserId) {SqlSessionTemplate.Delete (Delete_User, Userid); } Utilisateur public FindUserById (Integer UserId) {return sqlSessionTemplate.Selectone (find_user_byid, userId); } public list <ser utilisateur> findall () {return sqlSessionTemplate.SelectList (select_all_user); } public utilisateur userLogin (utilisateur utilisateur) {return sqlSessionTemplate.Selectone (user_login, utilisateur); }} 10. Interface de service utilisateur
Interface publique UserService {// Ajouter l'utilisateur public abstract void addUser (utilisateur utilisateur); Public Abstract void UpdateUser (utilisateur utilisateur); Public Abstract void DeleteUser (Integer UserId); L'utilisateur abstrait public finseUserById (Integer UserId); Public Abstract List <Derser> findAlUser (); Connexion utilisateur abstraite (utilisateur utilisateur); } 11. Implémentation de l'interface de service utilisateur
@Service @Transactional Public Class userserviceIMPL implémente userService {@Autowired Private UserDao UserDao; // Ajouter un utilisateur public void addUser (utilisateur utilisateur) {userdao.inserser (utilisateur); } // Mettre à jour l'utilisateur public void UpdateUser (utilisateur utilisateur) {userdao.updateUser (utilisateur); } public void DeleteUser (Integer UserId) {userdao.deleteUser (userId); } Utilisateur public FindUserById (Integer UserId) {return userdao.finDuserById (userId); } public list <ser utilisateur> findAlUser () {return userdao.findall (); } Public User Login (utilisateur utilisateur) {return userdao.userLogin (utilisateur); }} 12. Configurer les struts2
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts public "- // APache Software Foundation // Dtd Struts Configuration 2.1 // en" "http://struts.apache.org/dtds/struts-2.1.encoding"> <strutts> <antianky name = "StrUts.i18n.encoding"> <strutts> <antianky name = "StrUts.I18n.encoding" Value = "UTF-8" /> <! - Spécifiez l'ensemble de codage par défaut, qui est utilisé sur le setCacteRencoding () et Freemarker de httpservletRequest name = "strut.devmode" value = "true" /> <! - Imprimez les informations d'erreur détaillées en mode de développement -> <constante name = "strut.ui.theme" value = "xhtml" /> <package name = "user" namespace = "/ user" étend = "struts-default"> <action name = "user_ *" method = "{1}"> <ront name = "Success" type = "redirectaction"> user_queryalluser.action </ result> <result name = "input"> / index.jsp </ result> <result name = "userRs"> / userList.jsp </ result> <result name = "addUser"> / useradd.jsp </ result> <résultat name = "UpdateUser"> / userupdate.jsp </cult> </ action> 13. Implémentation spécifique de l'utilisateur
@Controller @Scope ("Prototype") La classe publique UserAction étend ActionSupport {@Autowired Private UserService UserService; utilisateur utilisateur privé; Liste privée <User> UserList; public String execute () lève l'exception {return null; } public String Login () {if (user! = null) {user user2 = userService.login (user); if (user2! = null) {return Success; }} this.addFielDerror ("user.username", "erreur dans le nom d'utilisateur ou le mot de passe!"); retour d'entrée; } public String addui () {return "addUser"; } public String updateUi () {user = userService.FindUserById (user.getId ()); return "UpdateUser"; } public String Add () {userService.adDuser (utilisateur); retourner le succès; } public String Delete () {userService.deleteUser (user.getId ()); retourner le succès; } public String Update () {userService.updateUser (utilisateur); retourner le succès; } public utilisateur getUser () {return utilisateur; } public void SetUser (utilisateur utilisateur) {this.user = utilisateur; } public String QueryAllUser () {userList = userService.FindAlUser (); return "UserList"; } public List <Derser> getUserList () {return userList; } public void SetUserList (list <serv> userList) {this.userList = userList; }} 14. Implémentation de la page de connexion
<% @ page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% @ taglib prefix = "s" uri = "/ struts-tags"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = basepath%>"> <itle> user ligin </ title> <méta http-equiv = "pragma" contenu = "no-cache"> <méta http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css"> -> <s: head /> </ head> <body> <enter> <h1> Login de l'utilisateur </h1> <s: a action = "user_addui" namespace = "/ user"> label = "username" name = "user.username"> </ s: textField> <s: mot de passe label = "mot de passe" name = "user.password"> </ s: mot de passe> <s: soumettre value = "login"> </ s: soumider> </ s: form> </ centr> </ body> </ html>
15. Ajouter une page
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <% @ taglib prefix = "s" uri = "/ struts-tags"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> User </Title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" contenu = "non-cache"> <meta http-equiv = "expires" contenu = "0"> </-head> <body> <enter> <h1> Ajouter un nouvel utilisateur </h1> <s: formulaire "user_add" namespace = "/ user" metheth = "post"> <s: textfield label = "username" name = "user.userName"> </ s: textfield> <s: mot de passe label = "mot de passe" name = "user.password"> </ s: mot de passe> <s: soumettre la valeur = "soumis"> </ s: soumis> </ s: formulaire> </ Centre> </ body> </ html>
16. Modifier la page
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <% @ taglib prefix = "s" uri = "/ struts-tags"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> user</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> </head> <body> <center> <h1>Modify user</h1> <s:form action="user_update" namespace = "/ user" method = "post"> <s: Hidden name = "user.id"> </ s: Hidden> <s: textfield label = "username" name = "user.usename"> </ s: textfield> <s: mot de passe label = "mot de passe" name = "user.password"> </ s: mot de passe> <s: soumission = "soumettre"> </ s: soumettre> </html>
17. Page de liste
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <% @ taglib prefix = "s" uri = "/ struts-tags"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> Liste </ title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" contenu = "non-cache"> <meta http-equiv = "expires" contenu = "0"> </-head> <body> <ende> <h2> list </h2> <h3> namespace = "/ user"> Ajouter un nouvel utilisateur </ s: a> </h3> <ball> <tr> <th> id utilisateur </th> <th> nom d'utilisateur </th> <th> mot de passe utilisateur </th> <th> Operation </ th> </tr> <s: iterator value = "userList"> <Tr> <Td> <s: propriété Value = "id" /> </td> value = "username" /> </td> <td> <s: propriété value = "mot de passe" /> </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> delete </ s: a> </td> </tr> </s: iterator> </s table> </ centr> </ body> </html>Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.