En el futuro cercano, la compañía desarrollará nuevos proyectos y usará el marco Struts2+MyBatis+Spring. Entonces, después de aprenderlo, lo publicaré en mi blog, ¡con la esperanza de ayudarte!
Principalmente realización de operaciones de adición, eliminación, modificación y búsqueda del usuario
1. Importar el paquete jar correspondiente
2. Configuración de Web.xml Configura principalmente Struts2 y Spring
El contenido del archivo web.xml es el siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> <web-app versión = "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/javaeeee/web-app_2_5.xsd"> <<java.com/xml/ns/javaeeee/web-app_2_5.xsd "> <<java.com/xml/ns/javaeeee/web-app_2_5.xsd"> <<java.com/xml/ns/javaeeee/web-app_2_5.xsd "> <<java.com/xml/ns/Javaeeee/web-app_2_5.xsd" <velceed-file> index.jsp </Welcome-File> </Welcome-File-List> <!-Cargando el archivo de configuración de Spring-> <Oyerer> <Oyerer-Class> org.springframework.web.context.contextLoaderListener </oyequer-class> </oyeyer> <!-Configurar la ubicación de la ubicación del archivo de configuración-> <xtute-param> <amamname> contextConfiglocation </amamname> <amam-value> classpath: beans.xml </amam-value> </text-param> <!-Configurar struts2-> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.strutsprepareAndexeCuteFilter </filter-class> </filtre> <filter-mapping> <filter-name> struts2 </filtre-name> <url-pattern>/*</sl-pattern> </filter-mapping> </beb-app>
3. Configure los archivos de configuración de Spring, principalmente incluyendo la configuración de fuentes de datos, transacciones, mybaits, etc.
El archivo de configuración de beans.xml es el siguiente:
<? xml versión = "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://wwww.springframework.org/sChMing" " 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.springfframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/contex frijoles con comentarios-> <context: annotation-config /> <!-Configure el paquete que se escanee-> <context: component-scan base-package = "com.pdsu.edu"> < /context: component-scan> <!-proxy-target-class = "true" forzar el uso de cglib proxy if false, spring se seleccionará automáticamente-<aop: suppeoJ- proxy-target-class = "true" /> <!-Ubicación del archivo de configuración de la base de datos-> <context: Property-placeholder ubicación = "classpath: jdbc.properties" /> <!-configure dbcp fuente de datos-> <bean id = "dataSource" destruye-method = "cerrar"> <nombre de propiedad = "DriverClassName" Value = "$ {JDBC.DBC.DBC.DBC.DRIPCRECLAsMe name = "url" value = "$ {jdbc.url}" /> <propiedad name = "username" value = "$ {jdbc.username}" /> <propiedad name = "contraseña" valor = "$ {jdbc.password}" /> <!-tiempo de espera mínimo en la cola-> <name de propiedad = "minidle" valor valor = "$ {jdbc.minidle}"> </propiedad> <!-tiempo de espera máximo en milisegundos-> <propiedad name = "maxwait" value = "$ {jdbc.maxwait}"> </propietS> < name="initialSize" value="${jdbc.initialSize}"></property> </bean> <!-- Configure mybitasSqlSessionFactoryBean --> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis.xml"></property> </bean> <!-- Configure SqlSessionTemplate --> <bean id="sqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <!-- Transaction Configuration--> <bean id="transactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- Configure las transacciones utilizando la anotación de anotación-> <tx: transaccion-manager de anotación = "transaccionManager"/> </beans> 4. Detalles del archivo de configuración de JDBC
jdbc.drivClassName = 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.initialsize = 3 jdbc.maxwait = 3000
5. Configure el archivo de configuración principal de MyBatis:
<? xml versión = "1.0" encoding = "utf-8"?> < type = "com.pdsu.edu.domain.user"/> </typealiases> <mappers> <mapper resource = "com/pdsu/edu/domain/sqlmappers/user.xml"/> </mappers> </configuración>
6. Configurar el archivo user.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtdd"> <mapperspace = "com.ps.edu.eder.eder"> <<resultmap type = "com.pdsu.edu.domain.user" id = "userResult">> <resultado propiedad = "id" columna = "id" jdbctype = "entero" javatype = "java.lang.integeger" /> <resultado Property = "username =" UserName " /> <Resultado =" Passions = "Password" columna = "Password" id = "userLogin" parametertype = "user" resultMap = "userResult"> select * de user where username =#{username} y contraseña =#{contraseña} </select> <select id = "selectAllUser" resultMap = "UserResult"> SELECT * de user </select> <seling Id = "FindUserByid" ParamETertype = "int" int "inting" us " from user where id=#{id} </select> <insert id="insertUser" parameterType="user"> <![CDATA[ insert into user(username,password) values(#{username},#{password}) ]]> </insert> <update id="updateUser" parameterType="user"> update user set username=#{username},password=#{password} where id =#{id} </update> <delete id = "deleteuser" parametertype = "int"> eliminar del usuario donde id =#{id} </elete> </mapper> 7. Cómo escribir entidad de usuario
El usuario de la clase pública implementa serializable {private static final long SerialVersionUid = -44159902815355582814l; ID de entero privado; nombre de usuario de cadena privada; contraseña de cadena privada; public Integer getId () {return id; } public void setid (ID de entero) {this.id = id; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; } @Override public string toString () {return "user [id =" + id + ", contraseña =" + contraseña + ", username =" + username + "]"; } @Override public int hashcode () {final int prime = 31; int resultado = 1; resultado = prime * resultado + ((id == nulo)? 0: id.hashcode ()); resultado de retorno; } @Override public boolean iguales (objeto obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; Usuario otro = (usuario) obj; if (id == null) {if (other.id! = null) return false; } else if (! id.equals (other.id)) return false; devolver verdadero; }} 8. Cómo escribir userdao
interfaz pública userdao {public abstract void Insertuser (usuario de usuario); Public Abstract Void UpdateUser (usuario de usuario); Public Abstract Void DeleteUser (Integer UserId); Usuario público abstracto FindUserById (Integer UserId); Lista de resúmenes públicos <Serement> FindAll (); Public Abstract User UserLogin (usuario de usuario); } 9. Implementación de userdao
@Repository public class UserDaoImpl implementa UserDao {private final String insert_user = "Insertuser"; cadena final privada update_user = "updateUser"; cadena final privada delete_user = "deleteuser"; cadena final privada find_user_byid = "finduserByid"; cadena final privada select_all_user = "selectAlluser"; Cadena final privada user_login = "UserLogin"; @AUTOWIRED SQLSESSIONTTemplate SQLSessionTemplate; public void Insertuser (usuario de usuario) {sqlsessionTemplate.insert (insert_user, usuario); } public void UpdateUser (usuario de usuario) {sqlsessiontemplate.update (update_user, usuario); } public void DeleteUser (Integer UserId) {sqlsessionTemplate.delete (delete_user, userId); } Public User FindUserById (Integer UserId) {return sqlsessionTemplate.selectone (find_user_byid, userId); } lista pública <serem> findall () {return sqlsessionTemplate.selectList (select_all_user); } Public User UserLogin (usuario de usuario) {return sqlsessionTemplate.selectone (user_login, usuario); }} 10. Interfaz de servicio de usuarios
Interfaz pública UserService {// Agregue el usuario público abstracto void adduser (usuario de usuario); Public Abstract Void UpdateUser (usuario de usuario); Public Abstract Void DeleteUser (Integer UserId); Usuario público abstracto FindUserById (Integer UserId); Lista de resúmenes públicos <Serement> FindAlluser (); Public Abstract Useric inicio de sesión (usuario de usuario); } 11. Implementación de la interfaz UserService
@Service @Transactional Public Class UserServiceImpl implementa UserService {@aUtowired userDao userDao; // Agregar usuarios public void adduser (usuario de usuario) {userdao.insertuser (usuario); } // actualizar el usuario public void updateUser (usuario de usuario) {userdao.updateuser (usuario); } public void DeleteUser (Integer UserId) {userDao.DeleteUser (userId); } Public User FindUserById (Integer UserId) {return userDao.finduserById (userId); } lista pública <serem> findalluser () {return userDao.findall (); } Public Useric Login (usuario de usuario) {return userdao.userlogin (usuario); }} 12. Configurar Struts2
<? xml versión = "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.dtdd"> <truts> <constant name = "Struts.i18n18n18n18ning" value = "utf-8"/> <!-Especifique el conjunto de codificación predeterminado, que se utiliza en setCharacterEncoding () y Freemarker de httpServletRequest, y la salida de vilocidad-> <constant name = "struts.configuration.xmlreload" valor = "true"/> <! name = "struts.devmode" value = "true"/> <!-Imprima información de error detallada en el modo de desarrollo-> <constant name = "struts.ui.theme" value = "xhtml"/> <paquete name = "user" namespace = "/user" extends = "struts-default"> <Action name = "us_*" método = "{1}"> <result name " type = "redirectation"> user_queryAlluser.action </resultado> <resultado name = "input">/index.jsp </resultado> <resultado name = "userList">/userlist.jsp </resultado> <resultado name = "adduser">/useradd.jsp </resultado d. 13. Implementación específica de Acción de usuario
@Controller @Scope ("Prototype") Public ClassationAction extiende ActionSupport {@aUtoWired private UserService UserService; Usuario privado de usuario; Lista privada <Serement> UserList; public String Execute () lanza la excepción {return null; } public String Login () {if (user! = null) {user user2 = userservice.login (user); if (user2! = null) {return éxito; }} this.addfielderror ("user.username", "¡Error en el nombre de usuario o contraseña!"); entrada de retorno; } public String addUi () {return "adduser"; } public String updateui () {user = Userservice.finduserById (user.getID ()); devolver "UpdateUser"; } public String add () {Userservice.adduser (usuario); devolver el éxito; } public String Delete () {UsserService.DeleteUser (user.getID ()); devolver el éxito; } public String Update () {UserService.UpdateUser (usuario); devolver el éxito; } Public User getUser () {return user; } public void setUser (usuario de usuario) {this.user = user; } public String QueryAlluser () {UserList = Userservice.findalluser (); devolver "UserList"; } Lista pública <serem> getUserList () {return UserList; } public void setUserList (list <serem> userList) {this.userList = userList; }} 14. Implementación de la página de inicio de sesión
<%@ page lenguaje = "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 ()+ruta+"/"; %> <! DocType html público "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <base href = "<%= basepath%>"> <title> Login de usuario </title> <meta http-equivar = "pragma" contenido = "no cache" " http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type="text/css" href="styles.css"> --> <s:head/> </head> <body> <center> <h1>User Login</h1> <s:a action="user_addUI" namespace="/user">Add a new user</s:a> <s:form action="user_login" namespace="/user" method="post"> <s:textfield etiqueta = "username" name = "user.username"> </s: textfield> <s: contraseña etiqueta = "contraseña" name = "user.password"> </s: contraseña> <s: enviar value = "login"> </s: enviar> </s: form> </center> </body> </html>
15. Agregue una página
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/Struts-Tags"%> < Usuario </title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> </head> <body> <center> <h1> Agregar un nuevo usuario </h1> <s: <s: "usuarios =" usuarios " namespace = "/user" método = "post"> <s: textfield etiqueta = "username" name = "user.username"> </s: textfield> <s: contraseña etiqueta = "contraseña" name = "user.password"> </s: contraseña> <s: enviar value = "enviar"> </s: enviar> </s: form> </center> </body> </html>
16. Modifique la página
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/Struts-Tags"%> < Usuario </title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> </head> <body> <center> <h1> modifica el usuario </h1> <h1 <s: stion acción = "usuarios" namespace = "/user" método = "post"> <s: Hidden name = "user.id"> </s: hidden> <s: textfield etiqueta = "username" name = "user.username"> </s: textfield> <s: contraseña etiqueta = "contraseña" name = "user.password"> </s: stip: subsit = "Subt" <s: subsit> s: Subt> s: Subt> s: Subt> S </body> </html>
17. Página de la lista
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/Struts-Tags"%> < List </title> <meta http-oquiv = "pragma" content = "no-cache"> <meta http-oquiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> </head> <body> <center> <h2> Lista de usuarios </h2> <h3> <s: una acción " namespace = "/user"> Agregue un nuevo usuario </s: A> </h3> <table> <tr> <th> ID de usuario </th> <th> Nombre de usuario </th> <th> contraseña de usuario </th> <th> operación </th> </th tr> <s: iterator value = "userList"> <tr> <td> <s: valor de propiedad = "Id" </> <t>> <td> 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_delet" Namespace = "/user"> <s: param name = "user.id"> $ {id} </s: param> delete </s: a> </td> </tr> </s: iterator> </table> </center> </body> </ html>Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.