当前位置:Gxlcms > 数据库问题 > springMVC注解方式+easyUI+MYSQL配置实例

springMVC注解方式+easyUI+MYSQL配置实例

时间:2021-07-01 10:21:17 帮助过:7人阅读

<?xml version="1.0" encoding="UTF-8"?> 2 3 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 6 7 <display-name>Spring3MVC</display-name> 8 9 <servlet> 10 <servlet-name>spring</servlet-name> 11 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 12 <init-param> 13 <param-name>contextConfigLocation</param-name> 14 <param-value>classpath:applicationContext.xml</param-value> 15 </init-param> 16 </servlet> 17 18 <servlet-mapping> 19 <servlet-name>spring</servlet-name> 20 <url-pattern>*.do</url-pattern> 21 </servlet-mapping> 22 23 <welcome-file-list> 24 <welcome-file>index.jsp</welcome-file> 25 </welcome-file-list> 26 </web-app>

其中,classpath:applicationContext.xml指定具体配置文件为applicationContext.xml。

<servlet-mapping>用来配置拦截哪些请求到servlet,这里表示拦截所有.do结尾的请求。

 

4.在/src中添加applicationContext.xml配置文件,文件内容如下:

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <beans xmlns="http://www.springframework.org/schema/beans"
  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
  5     xmlns:tx="http://www.springframework.org/schema/tx"
  6     xmlns:mvc="http://www.springframework.org/schema/mvc"
  7     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  9         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
 10         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
 11         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
 12     ">
 13     <!--    加入数据库连接配置文件    -->
 14     <context:property-placeholder location="classpath:jdbc.properties" />
 15     <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
 16     <context:component-scan base-package="com.mvc" />
 17     
 18     <!--
 19         配置数据源 destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用.
 20     -->
 21     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
 22         destroy-method="close">
 23         <property name="driverClass">
 24             <value>${jdbc.driverClassName}</value>
 25         </property>
 26         <property name="jdbcUrl">
 27             <value>${jdbc.url}</value>
 28         </property>
 29         <property name="user">
 30             <value>${jdbc.username}</value>
 31         </property>
 32         <property name="password">
 33             <value>${jdbc.password}</value>
 34         </property>
 35         <!--连接池中保留的最小连接数。 -->
 36         <property name="minPoolSize">
 37             <value>3</value>
 38         </property>
 39         <!--连接池中保留的最大连接数。Default: 15 -->
 40         <property name="maxPoolSize">
 41             <value>10</value>
 42         </property>
 43         <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
 44         <property name="initialPoolSize">
 45             <value>5</value>
 46         </property>
 47         <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
 48         <property name="maxIdleTime">
 49             <value>60</value>
 50         </property>
 51         <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
 52         <property name="acquireIncrement">
 53             <value>5</value>
 54         </property>
 55         <!--
 56             JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
 57             属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。 058
 58             如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
 59         -->
 60         <property name="maxStatements">
 61             <value>0</value>
 62         </property>
 63         <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
 64         <property name="idleConnectionTestPeriod">
 65             <value>60</value>
 66         </property>
 67         <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
 68         <property name="acquireRetryAttempts">
 69             <value>10</value>
 70         </property>
 71         <!--
 72             获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
 73             保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 071
 74             获取连接失败后该数据源将申明已断开并永久关闭。Default: false
 75         -->
 76         <property name="breakAfterAcquireFailure">
 77             <value>true</value>
 78         </property>
 79         <!--
 80             因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
 81             时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 076
 82             等方法来提升连接测试的性能。Default: false
 83         -->
 84         <property name="testConnectionOnCheckout">
 85             <value>false</value>
 86         </property>
 87     </bean>
 88     <!-- 配置Jdbc模板 -->
 89     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 90         <property name="dataSource" ref="dataSource" />
 91     </bean>    
 92     <!-- 配置事务管理器 -->
 93      <bean id="transactionManager"
 94         class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
 95         p:dataSource-ref="dataSource" />
 96 
 97     <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
 98     <bean
 99         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
100 
101     <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
102     <bean id="viewResolver"
103         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
104         <property name="prefix" value="/" />
105         <property name="suffix" value=".jsp" />
106     </bean>    
107 </beans>

其中,<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />开启注解功能,会将带有注解标签的类自动注入。

<context:component-scan base-package="com.mvc" />开启类的注解支持,让springMVC扫描类,将标有注解的类自动转化为bean,完成注入。

<bean id="viewResolver">用来配置视图解析器,指定视图文件所在的文件夹,将ModelAndView及字符串解析为具体的页面。

springMVC注解配置就只有以上三个部分,文件其余部分,如<bean id="dataSource" >用来配置jdbc方式的数据源的连接。

 

5.在/src中添加jdbc.properties配置文件,用来配置jdbc连接,文件内容如下:

1 jdbc.driverClassName=com.mysql.jdbc.Driver
2 jdbc.url=jdbc\:mysql\://localhost/testdb
3 jdbc.username=root
4 jdbc.password=123123

 

6.在/src中添加com.mvc.po包,在包中添加一个User类,用于存放用户实体,类中内容如下:

 1 package com.mvc.po;
 2 
 3 public class User {
 4     private int id;
 5     private String name;
 6     private String password;
 7     private int age;
 8 
 9     public User() {
10 
11     }
12     public User(int id, String name, String password, int age) {
13         this.id = id;
14         this.name = name;
15         this.password = password;
16         this.age = age;
17     }
18     public int getId() {
19         return id;
20     }
21     public void setId(int id) {
22         this.id = id;
23     }
24     public String getName() {
25         return name;
26     }
27     public void setName(String name) {
28         this.name = name;
29     }
30     public String getPassword() {
31         return password;
32     }
33     public void setPassword(String password) {
34         this.password = password;
35     }
36     public int getAge() {
37         return age;
38     }
39     public void setAge(int age) {
40         this.age = age;
41     }
42 }

 

7.在/src中添加com.mvc.controller包,在包中添加一个UserController类,类中内容如下:

 1 package com.mvc.controller;
 2 
 3 import java.util.List;
 4 
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.ResponseBody;
 9 
10 import com.alibaba.fastjson.JSON;
11 import com.mvc.po.User;
12 import com.mvc.service.UserService;
13 
14 @Controller
15 public class UserController {
16 
17     @Autowired
18     private UserService userService;
19 
20     @RequestMapping(value = "/query.do")
21     public @ResponseBody String query() {
22         List<User> list = this.userService.query();
23         return JSON.toJSONString(list);
24     }
25 }

其中,@Controller 注解用于表示控制层,把该class指定为controller,方法上的@RequestMapping 注解的value值指定该方法所映射的请求路径。属性加上@Autowired 注解可以免去getter()、setter()方法,spring会自动注入。@Responsebody 注解指定该方法的返回结果直接写入HTTP response body中。这里以json的格式返回查询结果,所以需要使用@Responsebody 注解。

 

8.在/src中添加com.mvc.service包,在包中添加一个接口类UserService和实现类UserServiceImpl,类中内容如下:

1 package com.mvc.service;
2 
3 import java.util.List;
4 import com.mvc.po.User;
5 
6 public interface UserService {
7     List<User> query();
8 }
 1 package com.mvc.service;
 2 
 3 import java.util.List;
 4 
 5 import com.mvc.dao.UserDAO;
 6 import com.mvc.po.User;
 7 import com.mvc.service.UserService;
 8 
 9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.stereotype.Service;
11 
12 @Service
13 public class UserServiceImpl implements UserService {
14 
15     @Autowired
16     private UserDAO userDAO;
17 
18     public List<User> query() {
19         return this.userDAO.query();
20     }
21 }

其中,@Service 注解用于表示业务层。

 

9.在/src中添加com.mvc.dao包,在包中添加一个接口类UserDAO和实现类UserDAOImpl,类中内容如下:

1 package com.mvc.dao;
2 
3 import java.util.List;
4 import com.mvc.po.User;
5 
6 public interface UserDAO {
7     List<User> query();    
8 }
 1 package com.mvc.dao;
 2 
 3 import java.util.List;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 
 7 import com.mvc.dao.UserDAO;
 8 import com.mvc.po.User;
 9 
10 import org.springframework.stereotype.Repository;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.jdbc.core.JdbcTemplate;
13 import org.springframework.jdbc.core.RowMapper;
14 
15 @Repository
16 public class UserDAOImpl implements UserDAO {
17 
18     @Autowired
19     private JdbcTemplate jdbcTemplate;
20 
21     public List<User> query() {
22         return this.jdbcTemplate.query("select * from student",
23                 new RowMapper<User>() {
24                     public User mapRow(ResultSet rs, int arg1)
25                             throws SQLException {
26                         return new User(rs.getInt("sId"),
27                                 rs.getString("sName"), rs.getString("sPwd"), rs
28                                         .getInt("sAge"));
29                     }
30                 });
31     }
32 }

其中,@Repository 注解用于表示数据访问层。

 

10.启动部署项目后,直接键入地址http://127.0.0.1/test/query.do就可以查看数据库返回的json格式的数据,如下图所示。其中,127.0.0.1表示本机地址,test是项目名称,query.do是方法的映射路径,就是我们在Controller中对应方法上RequestMapping的值。因为这里还没有设置前台页面,所以,这个访问方式就是直接调用的action,这个方式在实际应用中调试特定action的时候还蛮方便好用的。

技术分享

 到这一步,springMVC的配置已经完成,下面是在此基础上加入easyUI。

 

11.在/WebRoot下添加前台页面index.jsp,页面内容如下:

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5 <head>
 6 <title>SpringMVC demo</title>
 7 <meta http-equiv="pragma" content="no-cache">
 8 <meta http-equiv="cache-control" content="no-cache">
 9 <meta http-equiv="expires" content="0">
10 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
11 <meta http-equiv="description" content="This is my page">
12 
13 <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
14 <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
15 <script type="text/javascript" src="easyui/jquery.min.js"></script>
16 <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
17 <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>
18 </head>
19 
20 <body>
21     <table id="tb1">
22     </table>
23 
24     <script type="text/javascript">
25         $(document).ready(function() {
26             $(#tb1).datagrid({
27                 url : query.do,
28                 remoteSort : false,
29                 custom : true,
30                 iconCls : icon-edit,
31                 nowrap : true,
32                 striped : true,
33                 collapsible : true,
34                 pagination : true,
35                 rownumbers : true,
36                 fitColumns : true,
37                 fit : true,
38                 title : DataGrid with Info,
39                 pageSize : 15,
40                 pageList : [ 5, 15, 20, 30, 100 ],
41                 columns : [ [ {
42                     field : id,
43                     title : 用户id,
44                     hidden : true
45                 }, {
46                     field : name,
47                     title : 用户姓名,
48                     align : center
49                 }, {
50                     field : password,
51                     title : 密码,
52                     align : center
53                           

人气教程排行