Mybatis+Struts2的结合:实现用户插入和查找

12/12/2015来源:Java教程人气:671

  总结一下今天一个成功的小实验:Mybatis+Struts2的结合:实现用户插入和查找。删除和修改如果以后写了,会继续更新。

  一 准备工作。

   1.新建一个java web项目。

   2.在webContent\lib目录下导入所需要的jar包。

     a.struts2需要的jar包。

struts2 
         xwork-core.jar
         strut2-core.jar
         ognl.jar
         commoms-lang.jar
         freemarker.jar
         commons-fileupload.jar

      包的位置:

struts-2.3.24.1-all\struts-2.3.24.1\apps\WEB-INF\lib

      我下载的struts2的版本这个目录下有13个jar包,每个jar包的作用网上都可以查到。正常使用加入这六个就可以了。

    b.mybatis需要的的jar包。

      

asm.jar
cglib.jar
commons-logging-.jar
log4j.jar
mybatis.jar
slf4j-api.jar
slf4j-log4j12.jar

    c.MySQL需要的jar包。

mysql-connector-java-5.1.7-bin.jar

    到此准备工作就做好了。

  二.工程目录    

    在这里我贴出我的工程目录,便于我后面进行描述。

    

    三.写代码。

      对于Java web 工程的搭建,服务器的搭建我就不多说了,因为网上资料很多。(虽然我写的也有很多,但是只是想给自己做一个简单的总结,顺便分享给需要的人) 

      1.webContent\lib\web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>MybatisAndStruts2</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.jsp</welcome-file>
 6   </welcome-file-list>
 7   <filter>
 8         <filter-name>struts2</filter-name>
 9         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPRepareAndExecuteFilter</filter-class>
10   </filter>
11  <filter-mapping>
12         <filter-name>struts2</filter-name>
13         <url-pattern>/*</url-pattern>
14  </filter-mapping>
15 </web-app>

    2.index.jsp

      

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%
 4 
 5 String path = request.getContextPath();
 6 String BasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 7 
 8 %>
 9   
10 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
11 <html>
12 <head>
13 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
14 <base href="<%=BasePath %>"></base>
15 <title>首页</title>
16 </head>
17 <body>
18     <h3 align="center">添加用户</h3>
19     <form action="user/user!add">
20         <table align="center">
21             <tr>
22                 <td><input type="text" name="username"></td>
23             </tr>
24             <tr>
25                 <td><input type="passWord" name="password"></td>
26             </tr>
27             <tr>
28                 <td><input type="submit" value="提交"></td>
29             </tr>
30         </table>
31     </form>
32     
33     <h3 align="center">查询所有用户</h3>
34     <p align="center"><a  href="user/user!get">查询</a></p>
35 </body>
36 </html>

    3. user_add_success.jsp

    

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body bgcolor="#33CC99">
10 <h3 align="center">user add success</h3></body>
11 </html>

    

    4. user_get.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#33CC99">
<h3 align="center">用户列表</h3></body>
    <table align="center">
        <tr>
            <td>ID</td>
            <td>用户名</td>
            <td>密码</td>
        </tr>
        
        <s:iterator value="users" >    
            <tr>
                <td> <s:property value="id" />        </td>
                <td> <s:property value="username" />  </td>  
                <td> <s:property value="password" />  </td> 
            </tr>
        </s:iterator>  
    </table>

</html>

    

 

    5. struts.xml

 

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>    
 7      <constant name="struts.devMode" value="true" />
 8      <constant name="struts.enable.DynamicMethodInvocation" value="true" />
 9      
10      <package name="default" namespace="/user" extends="struts-default">
11         <action name="user" class="com.hjj.action.UserAction" >
12             <result name="add">
13             /user_add_success.jsp
14             </result>
15             
16             <result name="get">
17             /user_get.jsp?users=${users}
18             </result>
19         </action>
20     </package>
21 </struts>

     

    6. conf.xml

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
 3 <configuration>
 4     <environments default="development">
 5         <environment id="development">
 6             <transactionManager type="JDBC" />
 7                 <dataSource type="POOLED">
 8                     <property name="driver" value="com.mysql.jdbc.Driver" />
 9                     <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
10                     <property name="username" value="root" />
11                     <property name="password" value="000000" />
12                 </dataSource>
13         </environment>
14     </environments>
15     <mappers>
16             <mapper resource="com/hjj/dao/userMapper.xml"/>
17     </mappers>
18 </configuration>

    7. userMapper.xml

  

 1 <?xml version="1.0" encoding="UTF-8" ?> 
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
 3 <mapper namespace="com.hjj.dao.userMapper"> 
 4         <select id="getUser"  resultType="com.hjj.model.User"> 
 5                 select * from user;
 6         </select> 
 7         
 8         <insert id="insertUser"  parameterType="com.hjj.model.User"> 
 9                 insert into user (username,password) values (#{username},#{password});
10         </insert> 
11 </mapper>

    

    8 .User.java

 1 package com.hjj.model;
 2 
 3 public class User {
 4     
 5     private int id;
 6     private String username;
 7     private String password;
 8     
 9     public User(int id, String username, String password) {
10         super();
11         this.id = id;
12         this.username = username;
13         this.password = password;
14     }
15     public User() {
16         super();
17         // TODO Auto-generated constructor stub
18     }
19     
20     public int getId() {
21         return id;
22     }
23     public void setId(int id) {
24         this.id = id;
25     }
26     public String getUsername() {
27         return username;
28     }
29     public void setUsername(String username) {
30         this.username = username;
31     }
32     public String getPassword() {
33         return password;
34     }
35     public void setPassword(String password) {
36         this.password = password;
37     }
38     
39     @Override
40     public String toString() {
41         return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
42     }
43 }

    9. UserAction.java

  

 1 package com.hjj.action;
 2 
 3 import java.io.IOException;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import com.hjj.dao.MysqlDAO;
 8 import com.hjj.model.*;
 9 import com.opensymphony.xwork2.ActionSupport;
10 import com.opensymphony.xwork2.ModelDriven;
11 
12 public class UserAction extends ActionSupport implements ModelDriven<User>{
13     private User user = null; 
14     List<User> users = new ArrayList<User>();
15     
16     
17     public List<User> getUsers() {
18         return users;
19     }
20     
21     public void setUsers(List<User> users) {
22         this.users = users;
23     }
24     
25     public String add() throws IOException{
26         System.out.println(user);
27         MysqlDAO dao = new MysqlDAO();
28         dao.insertUser(user);        
29         return "add";
30     }
31     
32     public String get() throws IOException{
33         MysqlDAO dao = new MysqlDAO();
34         users = dao.getUsers();
35         return "get";
36     }
37     
38     
39     public User getModel() {
40         if(user == null){
41             user = new User();
42         }
43         return user;
44     }
45 
46 }

 

    10 . MysqlDAO.java

 

 1 package com.hjj.dao;
 2 
 3 import java.io.IOException;
 4 import java.io.Reader;
 5 import java.util.ArrayList;
 6 import java.util.List;
 7 
 8 import org.apache.ibatis.io.Resources;
 9 import org.apache.ibatis.session.SqlSession;
10 import org.apache.ibatis.session.SqlSessionFactory;
11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
12 
13 import com.hjj.model.User;
14 
15 public class MysqlDAO {
16     
17     private SqlSessionFactory sessionFactory = null;
18     private SqlSession session = null;
19     
20     public MysqlDAO() throws IOException{
21         String resource = "conf.xml"; 
22     
23         Reader reader = Resources.getResourceAsReader(resource); 
24     
25         sessionFactory = new SqlSessionFactoryBuilder().build(reader);
26         
27     }
28     public List<User> getUsers(){
29         
30         List<User> users = new ArrayList<User>();
31         
32         session = sessionFactory.openSession();
33         
34         String statement = "com.hjj.dao.userMapper.getUser";
35         
36         users = session.selectList(statement);
37         
38         session.commit();
39         
40         return users;
41     }
42     
43     public void insertUser(User user){
44             
45         session = sessionFactory.openSession();
46     
47         String statement = "com.hjj.dao.userMapper.insertUser";
48     
49         int row = session.insert(statement, user);
50         session.commit();
51         System.out.println(row);
52     }
53 }

  四.运行代码。

  1.地址栏输入:http://localhost:8080/MybatisAndStruts/index.jsp。显示页面如下(页面简单丑陋)。

第一个文本输入框为用户名,第二个为密码。

    2. 提交后页面显示

    

 

        3.返回index.jsp。点击查询。显示列表。

    

    至此,所有的代码和测试已经写完了。这应该算是很简单的一个mybatis和struts的整合了,就当做入门练习了。至于里面的一些东西,例如ModelDriven,和user/user!add这些东西,学过struts2的人应该都知道。不过为了自己能够更深刻的理解,在明天我也会做出总结。