博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
阅读量:6240 次
发布时间:2019-06-22

本文共 23715 字,大约阅读时间需要 79 分钟。

接上一篇:

 

 

eclipse maven工程自动添加依赖设置

maven工程可以在线搜索依赖的jar包,还是非常方便的

但是有的时候可能还需要设置下

eclipse不能在线搜索jar包 报错

如果搜索不到内容,或者有报错信息(index downloads are disabled ,search results may be incomplete)

windows  preference   maven   勾选上

然后  windows  show views

rebuild一下

就可以搜索了

注意这个地方的scope,暂且不管

我们输入spring-webmvc,找到我们需要的,单击一下就好了

还有就是,version只要是存在的版本,我们可以手动写的

添加了之后,顺手更新了下项目(注意,不是必须要做的哈,只是我手欠了)不过你早晚或许都会需要更新下

 

然后捏

尼玛,报错了....

想了一下不应该啊,都修改好了的

回头一看

我的jdk版本,还有eclipse的一些配置,都尼玛改回来了,还原了....

肿么了这是?

忘记设置了!!!!!

maven update project后版本还原,jdk还原了!

Maven 3.0 source和target的默认设置都是1.5,与运行Maven时的JDK版本无关,除非在项目的POM文件中显示的指定一个版本,否则每次更新后都会使用编译器默认的source/target版本1.5。

所以,把原来修改过的东西修改回去先......

然后pom.xml中显示的指定这一段

<build>  

    <plugins>  

        <plugin>  

            <groupId>org.apache.maven.plugins</groupId>  

            <artifactId>maven-compiler-plugin</artifactId>  

            <version>3.3</version>  

            <configuration>  

                <!-- 指定source和target的版本 -->                 

                <source>1.8</source>  

                <target>1.8</target>  

            </configuration>  

        </plugin>  

    </plugins>  

</build>

(如果有build标签了,就是plugins这一段)

然后在更新下  update project

刚才的错误就没了

我们刚才引入了spring-context  spring-webmvc发现多了好几个

这就是maven好处,它所依赖的包,会自动下载的...

我们再继续添加一个mybatis-spring

最后的结果就是这样子

HelloWorld.java

package springmvcMaven;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class HelloWorld {

public static void main(String[]args){

        ApplicationContext ctx = new FileSystemXmlApplicationContext("src/helloWorld.xml");

        HelloWorldSpringBean helloWorldSpringBean = (HelloWorldSpringBean)ctx.getBean("myHelloWorld");

helloWorldSpringBean.show();

    }

}

HelloWorldSpringBean.java

package springmvcMaven;

public class HelloWorldSpringBean {

private String hello;

public String getHello(){

return hello;

    }

public void setHello(String hello){

this.hello=hello;

    }

public void show(){

        System.out.println("--message--"+getHello());

    }

}

helloWorld.xml  在src的根目录下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="myHelloWorld" class="springmvcMaven.HelloWorldSpringBean">

<property name="hello">

<value>hello World spring!</value>

</property>

</bean>

</beans>

项目的结构就是这样子

右键  run as,打印信息成功

spring跑通 

现在开始测试一下springmvc的情况

为了接下来的项目的规范性,我们重新规划下项目的结构以及配置文件

这个是最新的结构

说白了新建了几个包,用于区分不同的功能划分,controller用于控制跳转,domain用于存放JavaBean,dao用于操作数据库相关,service用于相关接口的实现

mapper用于mybatis的xml文件

另外还有两个配置文件

ApplicationContext.xml

<?xml version="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:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd

        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

<!--扫描类包,标注spring注解的类自动转换成bean,同时完成bean的注入  (这样类中定义的spring注解  比如@repository @autowired等才能起作用)  -->

<context:component-scan base-package="com.noteless.bbs.domain" />

</beans>

springmvc.xml设置了自动扫描的controller的类包,并且设置了视图解析

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 

        http://www.springframework.org/schema/context 

        http://www.springframework.org/schema/context/spring-context-4.2.xsd 

        http://www.springframework.org/schema/mvc 

        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

<!-- 自动扫描带有@Controller注解的控制层,注入为bean -->

<context:component-scan base-package="com.noteless.bbs.controller" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/" />

<property name="suffix" value=".jsp" />

</bean>

</beans>

web.xml 中指定了配置文件的路径,以及配置了servlet

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

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/web-app_3_0.xsd">

<!--   <display-name>Archetype Created Web Application</display-name> -->

<!-- 1,从类路径下加载spring的配置文件,classpath关键字特指类路径下加载 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!--2,负责启动spring容器的监听器,它将引用1处的上下文参数,获得spring配置文件的地址  -->

<listener>

<listener-class>

    org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>bbs</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>bbs</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

controller里面新建一个LoginController.java

package com.noteless.bbs.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class LoginController {

@RequestMapping(value="/welcome")

public String toLoginPage(HttpServletRequest request){

return "welcome";

}

}

在views下面新建了一个欢迎页面

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!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>标题</title>

</head>

<body>

欢迎光临!

<br>

欢迎光临!

</body>

</html>

我们启动server,然后运行项目

可以看到springmvc的配置也没有问题

接下来是链接数据库,以及配置mybatis

刚才引用了一些包但是还远远不够,此处不再一一介绍没一个引用的包的作用以及何时引入了,贴出来我用到的包,

有了这些包就可以开始我们后续的项目了

注意;如果是项目搭建初期,如果有报错,我建议,先看看常用的或者必须要用到的一些包是不是缺失,都弄过来

如果还有报错,再去看具体的原因

当然如果你非常熟悉的话,看一眼报错就知道缺什么包那就最好了,估计你要是还在看我的文章,说明你不牛...

配置数据库以及配置mybatis

这个工程示例,是接着我的之前的文章中的示例写的,功能一样,结构不一样(之前的没用maven)

一些javaBean类以及service 都直接拿过来用了

有兴趣的翻一下其他的文章

现在的结构为:

applicationContext.xml

<?xml version="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:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd

        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

<!--扫描类包,标注spring注解的类自动转换成bean,同时完成bean的注入  (这样类中定义的spring注解  比如@repository @autowired等才能起作用)  -->

<context:component-scan base-package="com.noteless.bbs.domain" />

<!--扫描service包,应用spring注解配置  -->

<context:component-scan base-package="com.noteless.bbs.service" />

<!-- 定义一个使用DBCP实现的数据源 -->

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"

destroy-method="close"

p:driverClassName="com.mysql.jdbc.Driver"

p:url="jdbc:mysql://localhost:3306/sampledb"

p:username="root"

p:password="123456"/>

<!-- myBatis文件 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<!-- 自动扫描映射文件 -->

<property name="mapperLocations">

<array>

<value>classpath:mapper/*.xml</value>

</array>

</property>

</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.noteless.bbs.dao" />

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

</bean>

</beans>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 

        http://www.springframework.org/schema/context 

        http://www.springframework.org/schema/context/spring-context-4.2.xsd 

        http://www.springframework.org/schema/mvc 

        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

<!-- 自动扫描带有@Controller注解的控制层,注入为bean -->

<context:component-scan base-package="com.noteless.bbs.controller" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/" />

<property name="suffix" value=".jsp" />

</bean>

</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

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/web-app_3_0.xsd">

<!--   <display-name>Archetype Created Web Application</display-name> -->

<!-- 1,从类路径下加载spring的配置文件,classpath关键字特指类路径下加载 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!--2,负责启动spring容器的监听器,它将引用1处的上下文参数,获得spring配置文件的地址  -->

<listener>

<listener-class>

    org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>bbs</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>bbs</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

   其实,这几个文件是最重要的哈,还有jar包..

把接口  javaBean挪过来之后,配置处理好之后,测试一下,可以执行通过

这样一个完整的springmvc+mybatis+maven的项目就搭建完成了

哦,对了,还有一个log4j,它的使用也很简单

应用jar包

并且配置下配置文件即可

具体的可以参考我的工程直接eclipse导入即可了

     

防止链接失效,代码都贴出来吧..

一下就是所有的代码,建议下载我的工程,导入eclipse慢慢研究

 

spring原理 实践解析-简单的helloworld

springmvc整合mybatis完整项目示例

maven项目整合springmvc整合mybatis

 

 

工程项目:

 

 

 

 

用到的jar包

 

主要的配置文件:

web.xml

contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
bbs
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
bbs
*.do

 

 

springmvc.xml

appliacationContext.xml

classpath:mapper/*.xml

 

log4j.properties

### set log levels ###log4j.rootLogger = DEBUG,stdout,D### 输出到控制台 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 输出DEBUG 级别以上的日志到=E://logs/error.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = C://Users/joy/\Desktop/logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n### sql ###log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG  log4j.logger.java.sql.ResultSet=DEBUG

 

LoginController.java

package com.noteless.bbs.controller;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.noteless.bbs.domain.User;import com.noteless.bbs.service.UserService;@Controllerpublic class LoginController {    @Autowired    private UserService userService;        @RequestMapping(value="/welcome")    public String toLoginWelconenPage(HttpServletRequest request){        return "welcome";    }            @RequestMapping(value="/login")    public String toLoginPage(HttpServletRequest request){        return "login";    }            @RequestMapping(value="/checkLogin")    public String loginPage(HttpServletRequest request,User user){                Boolean loginSucess = userService.hasMatchUser(user);        if(loginSucess){            userService.loginSucess(userService.findUserByUserName(user));            request.getSession().setAttribute("Info","");            return "welcome";        }else{            request.getSession().setAttribute("Info","请重新输入!!");            return "redirect:/login.do";        }            }}

 

 

LoginLogMapper.java

package com.noteless.bbs.dao;import com.noteless.bbs.domain.LoginLog;public interface LoginLogMapper {    public void insertLoginLog(LoginLog loginLog);}

 

UserMapper.java

package com.noteless.bbs.dao;import com.noteless.bbs.domain.User;public interface UserMapper {        public Integer getMatchCount(User user);        public User findUserByUserName(User user);        public void updateLoginInfo(User user);        public void insertUser(User user);        public void updateUserInfo(User user);}

 

 

LoginLog.java

package com.noteless.bbs.domain;import java.io.Serializable;import java.util.Date;public class LoginLog implements Serializable{    /**     *      */    private static final long serialVersionUID = 1L;    private int loginLogId;    private int userId;    private String ip;    private Date loginDate;    public int getLoginLogId() {        return loginLogId;    }    public void setLoginLogId(int loginLogId) {        this.loginLogId = loginLogId;    }    public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    public String getIp() {        return ip;    }    public void setIp(String ip) {        this.ip = ip;    }    public Date getLoginDate() {        return loginDate;    }    public void setLoginDate(Date loginDate) {        this.loginDate = loginDate;    }        }

 

User.java

package com.noteless.bbs.domain;import java.io.Serializable;import java.util.Date;public class User implements Serializable{    /**     *      */    private static final long serialVersionUID = 1L;    private int userId;    private String userName;    private String password;    private int credits;    private String lastIp;    private Date lastVisit;            public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    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 = password;    }    public int getCredits() {        return credits;    }    public void setCredits(int credits) {        this.credits = credits;    }    public String getLastIp() {        return lastIp;    }    public void setLastIp(String lastIp) {        this.lastIp = lastIp;    }    public Date getLastVisit() {        return lastVisit;    }    public void setLastVisit(Date date) {        this.lastVisit = date;    }        }

 

 

LoginLogService.java

package com.noteless.bbs.service;import com.noteless.bbs.domain.LoginLog;public interface LoginLogService {    public void insertLoginLog(LoginLog loginLog);}

 

 

LoginLogServiceImpl.java

package com.noteless.bbs.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.noteless.bbs.dao.LoginLogMapper;import com.noteless.bbs.domain.LoginLog;@Servicepublic class LoginLogServiceImpl implements LoginLogService {    @Autowired    private LoginLogMapper loginLogMapper;    @Override    public void insertLoginLog(LoginLog loginLog) {        loginLogMapper.insertLoginLog(loginLog);            }}

 

UserService.java

package com.noteless.bbs.service;import com.noteless.bbs.domain.User;public interface UserService {    public Boolean hasMatchUser(User user);            public User findUserByUserName(User user);            public void loginSucess(User user);        public void insertUser(User user);    public void UpdateUser(User user);}

 

 

UserServiceImpl.java

package com.noteless.bbs.service;import java.util.Date;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.noteless.bbs.dao.UserMapper;import com.noteless.bbs.domain.LoginLog;import com.noteless.bbs.domain.User;@Servicepublic class UserServiceImpl implements UserService {    @Autowired    private UserMapper userMapper;    @Autowired    private LoginLogService loginLogService;        @Override    public Boolean hasMatchUser(User user) {                Integer matchCount = userMapper.getMatchCount(user);        if(matchCount > 0){            return true;        }else{            return false;        }    }    @Override    public User findUserByUserName(User user) {        return userMapper.findUserByUserName(user);    }    @Override    public void loginSucess(User user) {        user.setCredits(5+user.getCredits());        user.setLastVisit(new Date());                LoginLog loginLog = new LoginLog();                loginLog.setUserId(user.getUserId());        loginLog.setIp(user.getLastIp());        loginLog.setLoginDate(new Date());                        userMapper.updateLoginInfo(user);        loginLogService.insertLoginLog(loginLog);    }    @Override    public void insertUser(User user) {        userMapper.insertUser(user);    }        @Override    public void UpdateUser(User user) {        userMapper.updateUserInfo(user);    }    }

 

 

LoginLogMapper.xml

insert into t_login_log( user_id, ip, login_datetime ) values( #{userId}, #{ip}, #{loginDate} )

 

 

UserMapper.xml

UPDATE t_user
last_visit = #{lastVisit},
last_ip = #{lastIp},
credits = #{credits},
where user_id=#{userId}
insert into t_user( user_name, credits, password, last_ip, last_visit ) values( #{userName}, #{credits}, #{password}, #{lastIp}, #{lastVisit} )
UPDATE t_user
last_visit = #{lastVisit},
last_ip = #{lastIp},
credits = #{credits},
where user_id=#{userId}

 

TestUserService.java

package com.noteless.bbs;import static org.junit.Assert.*;import java.util.Date;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.noteless.bbs.domain.User;import com.noteless.bbs.service.UserService;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"/applicationContext.xml"})public class TestUserService {    @Autowired    private UserService userService;            private static Logger logger = Logger.getLogger(Test.class);          @Test    public void testLog(){                logger.debug("this is a debug info");            }        @Test     public void hasMAtchUser(){        User user1 = new User();        User user2 = new User();                user1.setUserName("admin");        user1.setPassword("123456");                user2.setUserName("admin");        user2.setPassword("11111");                        boolean b1 = userService.hasMatchUser(user1);        //boolean b2 = userService.hasMatchUser(user2);                assertTrue(b1);        //assertTrue(b2);                            }        @Test    public void findUserByUserName(){        User user = new User();                user.setUserName("admin");                User user1 = userService.findUserByUserName(user);        System.out.println(user1.getUserName());        assertEquals(user1.getUserName(),"admin");    }    @Test    public void loginSucess(){                User user = new User();        user.setUserName("admin");        user= userService.findUserByUserName(user);        userService.loginSucess(user);        }        @Test    public void insertUser(){                User user = new User();        user.setUserName("user1");        user.setPassword("123456");        user.setCredits(0);        user.setLastIp("255.255.255.255");        user.setLastVisit(new Date(0) );                userService.insertUser(user);                }    @Test    public void updateUserInfo(){                User user = new User();        user.setUserId(2);        user.setLastVisit(new Date() );        user.setCredits(5+user.getCredits());                userService.UpdateUser(user);                }    }

 

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
标题${Info}请输入用户名,密码登陆:
用户名:
密码:

 

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
标题欢迎光临!
欢迎光临!

转载于:https://www.cnblogs.com/noteless/p/5228083.html

你可能感兴趣的文章
matlab-基础 class 获取变量的类型
查看>>
去IBM面试后的感受
查看>>
Linux基础入门及系统管理01-Linux用户管理命令详解11
查看>>
TurboMail邮件服务器飞邮手机邮箱全新更新抢先睇
查看>>
《Java虚拟机原理图解》3、JVM运行时数据区
查看>>
mysql使用规范-行为规范
查看>>
python函数
查看>>
我的友情链接
查看>>
Expect的安装配置及简单测试脚本
查看>>
HBase Compact && Split
查看>>
我的友情链接
查看>>
OA系统失败之一技术缺陷
查看>>
售前工程师的成长---一个老员工的经验之谈(四)(转载)
查看>>
UIAlertView总结
查看>>
开源 java CMS - FreeCMS2.8 自定义标签 infoList
查看>>
jsp部署tomcat,集成MyEclipse
查看>>
关于symfony的serivce存在的意义
查看>>
1、SpringBoot+MybatisPlus整合
查看>>
面向sql编程
查看>>
Kubernetes之kubectl常用命令使用指南:2:故障排查
查看>>