Java-手动搭建SSM(Maven)
2019-08-16 12:39:48来源:博客园 阅读 ()
Java-手动搭建SSM(Maven)
一、环境部署
- 操作系统:windows10专业版
- jdk:1.8.0_144
- IDE:eclipse-oxygen
- 服务器:tomcat 9.0
- 数据库:mysql 5.7.18
- Maven:3.54
“工欲善其事必先利其器”,环境一定要提前搭建好。
二、新建Maven项目
在菜单栏依次单击File-New-Maven Project
选择maven-archetype-webapp,然后单击next;
填写Group Id,Artifact Id,Package,单击Finish,稍等片刻。
到这里项目创建完成了,但是项目节点上有个红叉叉(下图),同时Markers中报错说找不到HttpServlet这个父类,下面我们解决一下。
为项目添加运行环境,在项目节点右键,然后依次单击Build Path-Configure Build Path…,打开Java Build Path,切换到Libraries标签,单击Add Library按钮;在Add Library选择Server Runtime并单击Next;
配置没有问题的话会列出已经添加的server runtime, 选择已经搭好环境的Tomcat,之后单击Finish.
可以看到Apache Tomcat已经添加进来了,其他选项暂时不用管,一会儿我会讲到。单击apply and close应用并关闭该界面。
以防出现问题这里我们重新同步版本信息在菜单来中依次点击Window-Show View-Navigator,打开Navigator.
跳到Navigator标签,在.settings文件夹下打开org.eclipse.jdt.core.prefs,将红色框中的参数修改为图中所示的数据,并保存文件。
打开org.eclipse.wst.common.component,将红色框中的参数修改为图中所示的数据,并保存文件。
打开org.eclipse.wst.common.project.facet.core.xml,将红色框中的参数修改为图中所示的数据,并保存文件。
删除如图目录下web.xml(后提到该文件指如图目录下)中红色框中内容,警告信息暂时不用管。
修改JRE System Library为JavaSE-1.8.
打开项目根节点下的pom.xml,添改如下代码。
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.apache.maven.plugins</groupId> 5 <artifactId>maven-compiler-plugin</artifactId> 6 <version>3.0</version> 7 <configuration> 8 <!-- 指定source和target的版本 --> 9 <source>1.8</source> 10 <target>1.8</target> 11 </configuration> 12 </plugin> 13 </plugins> 14 </build>View Code
在项目节点右击,依次单击Maven-Update Project, 勾选当前的项目,单击OK按钮。稍等片刻,项目中的红色叉叉应该会消失。如果没有消失再详细检查一下前面的所有步骤,然后看一下Markers中的错误。
打开项目根目录下的pom.xml文件,添加必要的依赖,添加之后如下所示。
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>cn.stevengo</groupId> 5 <artifactId>ssm-test</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>ssm-test Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 <dependencies> 11 <dependency> 12 <groupId>org.springframework</groupId> 13 <artifactId>spring-webmvc</artifactId> 14 <version>4.3.13.RELEASE</version> 15 </dependency> 16 <dependency> 17 <groupId>org.springframework</groupId> 18 <artifactId>spring-context</artifactId> 19 <version>4.3.13.RELEASE</version> 20 </dependency> 21 <!--spring控制模块 --> 22 <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> 23 <dependency> 24 <groupId>org.springframework</groupId> 25 <artifactId>spring-aspects</artifactId> 26 <version>4.3.13.RELEASE</version> 27 </dependency> 28 <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 29 <dependency> 30 <groupId>org.springframework</groupId> 31 <artifactId>spring-jdbc</artifactId> 32 <version>4.3.13.RELEASE</version> 33 </dependency> 34 <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> 35 <dependency> 36 <groupId>org.springframework</groupId> 37 <artifactId>spring-test</artifactId> 38 <version>4.3.13.RELEASE</version> 39 <scope>test</scope> 40 </dependency> 41 42 <!-- mybatis --> 43 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> 44 <dependency> 45 <groupId>org.mybatis</groupId> 46 <artifactId>mybatis</artifactId> 47 <version>3.4.5</version> 48 </dependency> 49 <!-- mybatis整合spring的适配包 --> 50 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> 51 <dependency> 52 <groupId>org.mybatis</groupId> 53 <artifactId>mybatis-spring</artifactId> 54 <version>1.3.1</version> 55 </dependency> 56 <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> 57 <dependency> 58 <groupId>org.mybatis.generator</groupId> 59 <artifactId>mybatis-generator-core</artifactId> 60 <version>1.3.5</version> 61 </dependency> 62 63 <!-- 数据库连接池 --> 64 <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> 65 <dependency> 66 <groupId>com.mchange</groupId> 67 <artifactId>c3p0</artifactId> 68 <version>0.9.5.2</version> 69 </dependency> 70 <!-- 数据库驱动 --> 71 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 72 <dependency> 73 <groupId>mysql</groupId> 74 <artifactId>mysql-connector-java</artifactId> 75 <version>5.1.40</version> 76 </dependency> 77 <!-- jstl --> 78 <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> 79 <dependency> 80 <groupId>javax.servlet</groupId> 81 <artifactId>jstl</artifactId> 82 <version>1.2</version> 83 </dependency> 84 <!-- servlet api --> 85 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 86 <dependency> 87 <groupId>javax.servlet</groupId> 88 <artifactId>javax.servlet-api</artifactId> 89 <version>4.0.0</version> 90 </dependency> 91 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> 92 <dependency> 93 <groupId>com.alibaba</groupId> 94 <artifactId>fastjson</artifactId> 95 <version>1.2.28</version> 96 </dependency> 97 98 <!-- junit --> 99 <!-- https://mvnrepository.com/artifact/junit/junit --> 100 <dependency> 101 <groupId>junit</groupId> 102 <artifactId>junit</artifactId> 103 <version>4.12</version> 104 <scope>test</scope> 105 </dependency> 106 </dependencies> 107 <build> 108 <plugins> 109 <plugin> 110 <groupId>org.apache.maven.plugins</groupId> 111 <artifactId>maven-compiler-plugin</artifactId> 112 <version>3.0</version> 113 <configuration> 114 <!-- 指定source和target的版本 --> 115 <source>1.8</source> 116 <target>1.8</target> 117 </configuration> 118 </plugin> 119 </plugins> 120 </build> 121 </project>View Code
修改web.xml的信息,添加spring容器,前端控制器,字符编码控制器等,修改后代码如下所示。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 6 <!-- 启动spring的容器 --> 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>classpath:applicationContext.xml</param-value> 10 </context-param> 11 <listener> 12 <listener-class> 13 org.springframework.web.context.ContextLoaderListener 14 </listener-class> 15 </listener> 16 <!-- Spring MVC的前端控制器 --> 17 <servlet> 18 <servlet-name>springMVC</servlet-name> 19 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 20 <init-param> 21 <param-name>contextConfigLocation</param-name> 22 <param-value>classpath:SpringMVC-servlet.xml</param-value> 23 </init-param> 24 <load-on-startup>1</load-on-startup> 25 </servlet> 26 27 <servlet-mapping> 28 <servlet-name>springMVC</servlet-name> 29 <url-pattern>/</url-pattern> 30 </servlet-mapping> 31 <!-- 字符编码过滤器 --> 32 <filter> 33 <filter-name>characterEncodingFilter</filter-name> 34 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 35 <init-param> 36 <param-name>encoding</param-name> 37 <param-value>utf-8</param-value> 38 </init-param> 39 <init-param> 40 <param-name>forceRequestEncoding</param-name> 41 <param-value>true</param-value> 42 </init-param> 43 <init-param> 44 <param-name>forceResposeEncoding</param-name> 45 <param-value>true</param-value> 46 </init-param> 47 </filter> 48 <filter-mapping> 49 <filter-name>characterEncodingFilter</filter-name> 50 <url-pattern>/*</url-pattern> 51 </filter-mapping> 52 <!-- 使用rest风格的URI --> 53 <filter> 54 <filter-name>HiddenHttpMethodFilter</filter-name> 55 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 56 </filter> 57 <filter-mapping> 58 <filter-name>HiddenHttpMethodFilter</filter-name> 59 <url-pattern>/*</url-pattern> 60 </filter-mapping> 61 <display-name>Archetype Created Web Application</display-name> 62 63 </web-app>View Code
在src\main\resources目录下新建名为applicationContext.xml的文件(注意:文件名不一定非得是这个,看个人习惯,文件名和文件路径与web.xml中的配置有关),添加如下代码,注意将代码中的包名修改为设置的。同时在该目录下创建名为mapper的文件夹,用来保存数据库映射文件。
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:context="http://www.springframework.org/schema/context" 4 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-4.3.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd 11 http://www.springframework.org/schema/aop 12 http://www.springframework.org/schema/aop/spring-aop-4.3.xsd 13 http://www.springframework.org/schema/tx 14 http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> 15 <context:component-scan base-package="cn.stevengo"> 16 <context:exclude-filter type="annotation" 17 expression="org.springframework.stereotype.Controller" /> 18 </context:component-scan> 19 <!--sping的配置文件和业务逻辑有关的 --> 20 <context:property-placeholder location="classpath:jdbc.properties" /> 21 <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 22 <property name="jdbcUrl" value="${jdbc.url}"></property> 23 <property name="driverClass" value="${jdbc.driver}"></property> 24 <property name="user" value="${jdbc.user}"></property> 25 <property name="password" value="${jdbc.password}"></property> 26 </bean> 27 <!-- 配置和mybatis的整合 --> 28 29 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 30 <!-- 指定mybatis全局配置文件的位置 --> 31 <property name="configLocation" value="classpath:mybatis-config.xml"></property> 32 <property name="dataSource" ref="pooledDataSource"></property> 33 <!-- 指定mybatis mapper文件的位置 --> 34 <property name="mapperLocations" value="classpath:mapper/*.xml"></property> 35 </bean> 36 <!-- 配置扫描器 --> 37 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 38 <!-- 扫描素有的dao接口的实现,加入到容器中 --> 39 <property name="basePackage" value="cn.stevengo.ssmtest.dao"></property> 40 </bean> 41 <bean id="transactionManager" 42 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 43 <property name="dataSource" ref="pooledDataSource"></property> 44 </bean> 45 <!-- 开启基于注解的事务 --> 46 <aop:config> 47 <!-- 切入点表达式 --> 48 <aop:pointcut expression="execution(* cn.stevengo.ssmtest.service..*(..))" 49 id="txPoint"></aop:pointcut> 50 <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint" /> 51 </aop:config> 52 <!-- 配置事务增强 --> 53 <tx:advice id="txAdvice"> 54 <tx:attributes> 55 <tx:method name="*" /> 56 <tx:method name="get*" read-only="true" /> 57 </tx:attributes> 58 </tx:advice> 59 </beans>View Code
在src\main\resources创建文件名为jdbc.properties的文件,内容格式如下。注意url,driver,user,password都是自己在数据库设置的信息。
1 jdbc.url=jdbc:mysql://localhost:3306/testDB?useUnicode=true&characterEncoding=utf-8 2 jdbc.driver=com.mysql.jdbc.Driver 3 jdbc.user=testUser 4 jdbc.password=123456View Code
在src\main\resources创建文件名为SpringMVC-servlet.xml的文件。(名字和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:mvc="http://www.springframework.org/schema/mvc" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 8 http://www.springframework.org/schema/mvc 9 http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context-4.3.xsd 12 http://www.springframework.org/schema/aop 13 http://www.springframework.org/schema/aop/spring-aop-4.3.xsd 14 http://www.springframework.org/schema/tx 15 http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> 16 <!-- spring MVC配置,包含网站跳转逻辑的控制,配置 --> 17 <context:component-scan base-package="cn.stevengo" 18 use-default-filters="false"> 19 <!-- 只扫描控制器 --> 20 <context:include-filter type="annotation" 21 expression="org.springframework.stereotype.Controller"></context:include-filter> 22 </context:component-scan> 23 <!-- 定义无Controller的path<->view直接映射 --> 24 <!-- 定义视图文件解析 --> 25 <bean 26 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 27 <property name="prefix" value="/WEB-INF/view" /> 28 <property name="suffix" value=".jsp" /> 29 </bean> 30 <!-- 对静态资源文件的访问, 将无法mapping到Controller的path交给default servlet handler处理 --> 31 <mvc:default-servlet-handler /> 32 <!-- 配置了阿里巴巴的fastJson,可以将实体以json的形式返回 --> 33 <mvc:annotation-driven> 34 <mvc:message-converters register-defaults="false"> 35 <bean 36 class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> 37 <property name="supportedMediaTypes"> 38 <list> 39 <!-- 避免IE返回时出现下载提示! --> 40 <value>text/html;charset=UTF-8</value> 41 <value>application/json;charset=UTF-8</value> 42 </list> 43 </property> 44 </bean> 45 </mvc:message-converters> 46 </mvc:annotation-driven> 47 </beans>View Code
在src\main\resources创建文件名为mybatis-config.xml的文件,注意将包名替换为自己的。
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <settings> 7 <setting name="mapUnderscoreToCamelCase" value="true" /> 8 </settings> 9 <typeAliases> 10 <package name="cn.stevengo.ssmtest.bean" /> 11 </typeAliases> 12 </configuration>View Code
目录结构如图所示,执行依次update Project,看看项目有没有红叉叉(如果出错查看错误信息看看那个地方出错了),之后请运行看看能不能出现那个“Hello World!”(文件自己写)
三、测试环境
出现“Hello World!”SSM环境已经搭建完成了。测试主要是两部分,一个是SpringMVC,一个是Mybatis。
1、我们先来测试SpringMVC。
在Bean包下创建TestBean.java
1 /** 2 * 用于测试的bean 3 */ 4 public class TestBean { 5 private String testStr; 6 private int testInt; 7 8 public String getTestStr() { 9 return testStr; 10 } 11 12 public void setTestStr(String testStr) { 13 this.testStr = testStr; 14 } 15 16 public int getTestInt() { 17 return testInt; 18 } 19 20 public void setTestInt(int testInt) { 21 this.testInt = testInt; 22 } 23 24 }View Code
在Controller包下创建TestController.java
1 import org.springframework.stereotype.Controller; 2 import org.springframework.web.bind.annotation.RequestMapping; 3 import org.springframework.web.bind.annotation.ResponseBody; 4 5 import cn.stevengo.ssmtest.bean.TestBean; 6 7 @Controller 8 public class TestController { 9 @RequestMapping("stringTest") 10 @ResponseBody 11 public String returnStr() { 12 return "hello,即使是中文也可以"; 13 } 14 15 @RequestMapping("entityTest") 16 @ResponseBody 17 public TestBean returnEntify() { 18 TestBean testBean = new TestBean(); 19 testBean.setTestStr("测试实体"); 20 testBean.setTestInt(12); 21 return testBean; 22 } 23 }View Code
运行测试,URL为,地址+@RequestMapping中的值,如果数据返回正常,说明环境spring MVC环境正常。
2、测试Mybatis
测试方案:MyBatis的Generator逆向工程生成bean,dao和mapper,在用junit单元测试完成。
创建数据库和对应的表,数据库名为testDB,数据表为test_t,表中有两个字段,分表是testStr,testInt,分别代表整型和字符串类型的数据。(准备工作一定要首先做好)
在项目根目录下创建generatorConfig.xml的文件,其内容如下
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 6 <generatorConfiguration> 7 <context id="DB2Tables" targetRuntime="MyBatis3"> 8 <!-- 禁止添加注释 --> 9 <commentGenerator> 10 <property name="suppressAllComments" value="true" /> 11 </commentGenerator> 12 <!-- 数据库连接信息 --> 13 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 14 connectionURL="jdbc:mysql://localhost:3306/testDB" 15 userId="testUser" password="123456"> 16 </jdbcConnection> 17 18 <javaTypeResolver> 19 <property name="forceBigDecimals" value="false" /> 20 </javaTypeResolver> 21 <!-- 指定javabean生成的位置 --> 22 <javaModelGenerator targetPackage="cn.stevengo.ssmtest.bean" 23 targetProject=".\src\main\java"> 24 <property name="enableSubPackages" value="true" /> 25 <property name="trimStrings" value="true" /> 26 </javaModelGenerator> 27 <!-- 指定映射文件生成的位置 --> 28 <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"> 29 <property name="enableSubPackages" value="true" /> 30 </sqlMapGenerator> 31 <!-- 指定dao接口生成的位置 --> 32 <javaClientGenerator type="XMLMAPPER" 33 targetPackage="cn.stevengo.ssmtest.dao" targetProject=".\src\main\java"> 34 <property name="enableSubPackages" value="true" /> 35 </javaClientGenerator> 36 <table tableName="test_t" domainObjectName="TestBean"></table> 37 </context> 38 </generatorConfiguration>View Code
其实逆向工程的生成方式常用的有两种,右击generratorConfigure.xml文件—> Run As —> Run Mybatis Generator,不过这种方式需要在pom.xml添加mybatils逆向生成代码的依赖和插件。之后会有相关的总结
本篇文章我们使用下面这种方式:
test包下创建MBGTest.java的文件(下载的逆向工程文档中都有示例),内容如下
1 import java.io.File; 2 import java.io.IOException; 3 import java.sql.SQLException; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import org.mybatis.generator.api.MyBatisGenerator; 8 import org.mybatis.generator.config.Configuration; 9 import org.mybatis.generator.config.xml.ConfigurationParser; 10 import org.mybatis.generator.exception.InvalidConfigurationException; 11 import org.mybatis.generator.exception.XMLParserException; 12 import org.mybatis.generator.internal.DefaultShellCallback; 13 14 public class MBGTest { 15 public static void main(String args[]) 16 throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException { 17 List<String> warnings = new ArrayList<String>(); 18 boolean overwrite = true; 19 File configFile = new File("generatorConfig.xml"); 20 ConfigurationParser cp = new ConfigurationParser(warnings); 21 Configuration config = cp.parseConfiguration(configFile); 22 DefaultShellCallback callback = new DefaultShellCallback(overwrite); 23 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); 24 myBatisGenerator.generate(null); 25 } 26 27 }View Code
在该文件上右击,然后以java application的方式运行。运行完之后刷新项目列表,此对应的包下面生成了包文件(注意上一个测试可能由于bean结构的变化失效,此时修改controller的代码即可),结果如图所示:
生成的文件mapper文件和dao接口提供了好多方法我们只对其中插入进行测试。test包下创建名为TestDao.java的文件,其内容如下所示:
1 import org.junit.runner.RunWith; 2 import org.junit.Test; 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.test.context.ContextConfiguration; 5 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 6 7 import cn.stevengo.ssmtest.bean.TestBean; 8 import cn.stevengo.ssmtest.dao.TestBeanMapper; 9 10 @RunWith(SpringJUnit4ClassRunner.class) 11 @ContextConfiguration(locations = { "classpath:applicationContext.xml" }) 12 public class TestDao { 13 @Autowired 14 TestBeanMapper testBeanMapper; 15 16 @Test 17 public void testInsert() { 18 TestBean testBean = new TestBean(); 19 testBean.setTeststr("mybatisInsert"); 20 testBean.setTestint(343); 21 22 testBeanMapper.insert(testBean); 23 24 } 25 }View Code
以junit运行上述代码,待完成之后打开数据库,检查记录是否已经插入。到这里就测试完毕了。
原文链接:https://www.cnblogs.com/kaspar/p/11363059.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java--反射(框架设计的灵魂)案例 2020-06-11
- Java--注解 2020-06-11
- Java--反射(框架设计的灵魂) 2020-06-11
- java学习之第一天 2020-06-11
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash