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

  总结一下今天一个成功的小实验: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的人应该都知道。不过为了自己能够更深刻的理解,在明天我也会做出总结。

      

时间: 2024-08-02 04:23:46

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

顺序表 初始化 插入 删除 查找 合并 交换 判断为空 求长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define TRUE 1 #define ERROR -1 #define FALSE -1 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(SqList) #define MLC (Li

单链表 初始化 创建 头插法 尾插法 插入 删除 查找 合并 长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 #define TRUE 1 #define FALSE -1 #define NULL 0 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(LNode) #

萌新笔记——C++里创建 Trie字典树(中文词典)(二)(插入、查找、导入、导出)

萌新做词典第二篇,做得不好,还请指正,谢谢大佬! 做好了插入与遍历功能之后,我发现最基本的查找功能没有实现,同时还希望能够把内存的数据存入文件保存下来,并可以从文件中导入词典.此外,数据的路径是存在配置文件中的.甚至,还想尝试类似自动补全的功能.当然了,是做一个比较low的补全,比如传入"编程",能够得到"软件"."学习"."学习网站"."入门"四个字符串.但是传入"编"不会得到&quo

java实现数据结构-线性表-顺序表,实现插入,查找,删除,合并功能

package 顺序表; import java.util.ArrayList; import java.util.Scanner; public class OrderList { /** * @param args * @author 刘雁冰 * @2015-1-31 21:00 */ /* * (以下所谓"位置"不是从0开始的数组下标表示法,而是从1开始的表示法.) * (如12,13,14,15,16数据中,位置2上的数据即是13) * * 利用JAVA实现数据结构-线性表-顺

Java实现二叉排序树的插入、查找、删除

import java.util.Random; /** * 二叉排序树(又称二叉查找树) * (1)可以是一颗空树 * (2)若左子树不空,则左子树上所有的结点的值均小于她的根节点的值 * (3)若右子树不空,则右子树上所有的结点的值均大于她的根节点的值 * (4)左.右子树也分别为二叉排序树 * * * 性能分析: * 查找性能: * 含有n个结点的二叉排序树的平均查找长度和树的形态有关, * (最坏情况)当先后插入的关键字有序时,构成的二叉排序树蜕变为单枝树.查找性能为O(n) * (最好

顺序栈的初始化,建立,插入,查找,删除。

--- 顺序栈:普通数组保存方式,栈顶(max-1)为满,栈底(-1)为空: //////////////////////////////////////////// //顺序栈的初始化,建立,插入,查找,删除.// //Author:Wang Yong // //Date: 2010.8.19 // //////////////////////////////////////////// #include <stdio.h> #include <stdlib.h> #define

单链表的使用(插入,查找,删除,链表的倒置,删除相同结点)

typedef struct node//该结构体代表一个结点{ int data; //结点的数据域 struct node *next; //结点的指针域}lnode,*linklist; //定义一个结构体变量和指向结构体的指针//用头插法创建一个链表linklist create_begin(){ linklist head=(linklist)malloc(sizeof(lnode));//定义头结点并开辟空间 head->next=NULL; //为避免指针乱指,将头结点下一个指针赋

哈希(hash) 之插入和查找(链地址法)

一:学些心得 1 getHash函数的设计最牛的是Unix中处理字符串的ELFHash():当然也可以自己写一个比较简单的getHash函数关键在于去mod M的M值,使器均匀的分布(一般是不大于hash_size的某一个素数,接近于2的某次幂):但是有一点需要注意就是返回的hash值必须是正值. 2 处理冲突的方法:链地址法是比较好的方法了(静态动态都可以的):二次哈希(一般是加key值)再探测:或者加1再探测 3 插入和查找以及删除的第一步都是一样的,getHash(),时候存在-- 4 对

处理文件,用户指定要查找的文件和内容,讲文件中包含要查找内容的每一行都要输出到屏幕

处理文件,用户指定要查找的文件和内容,讲文件中包含要查找内容的每一行都要输出到屏幕: 预先有一个名为 cars.py 的文件,其内容为: cars = ['honda','yamaha','suzuki'] print(cars) cars[0] = 'ducati' print(cars) cars.append('马大哈') print(sorted(cars)) print(cars) 接下来写生成代码: def check_file(): # 创建一个名为 check_file 的生成器