2.搭建配置最简单的spring mvc 工程-基础版
目标:用最少的东西,搭建可以运行的最最基础的springMvc登陆校验项目!
spring 4
1.首先配置pom.xml引入spring 相关jar, 引用都有注释, 无关的可以暂时不引用。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gof</groupId>
<artifactId>gof-web</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>gof-web</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springVersion>4.3.0.RELEASE</springVersion>
<jacksonVersion>2.9.3</jacksonVersion>
<mybatisVersion>3.4.4</mybatisVersion>
<mybatisSpringVersion>1.3.0</mybatisSpringVersion>
<c3p0Version>0.9.5.2</c3p0Version>
<mysqlVersion>5.1.38</mysqlVersion>
<slf4jVersion>1.7.21</slf4jVersion>
<log4jVersion>1.2.17</log4jVersion>
<jstlVersion>1.2</jstlVersion>
<servletApiVersion>3.1.0</servletApiVersion>
<junitVersion>4.12</junitVersion>
</properties>
<dependencies>
<!--junit 测试开始-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitVersion}</version>
<scope>test</scope>
</dependency>
<!--junit 测试结束--> <!--Slf4j + Log4j日志依赖 开始-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4jVersion}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4jVersion}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4jVersion}</version>
</dependency>
<!--Slf4j + Log4j日志依赖 结束--> <!--JavaEE web容器提供 开始-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servletApiVersion}</version>
<scope>provided</scope>
</dependency>
<!--JavaEE web容器提供 开始--> <!--Jsp 常用标签库依赖 开始-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstlVersion}</version>
<scope>runtime</scope>
</dependency>
<!--Jsp 常用标签库依赖 结束--> <!-- SpringMVC模块依赖 开始-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jacksonVersion}</version>
</dependency>
<!-- SpringMVC模块依赖 结束--> <!-- Mybatis模块依赖 开始-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatisVersion}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatisSpringVersion}</version>
</dependency>
<!-- Mybatis模块依赖 结束--> <!--C3p0 数据库连接池依赖 开始-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0Version}</version>
</dependency>
<!--C3p0 数据库连接池依赖 结束--> <!--Jdbc 驱动依赖 开始 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysqlVersion}</version>
</dependency>
<!--Jdbc 驱动依赖 结束 --> <!--Spring常用模块依赖 开始-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springVersion}</version>
</dependency>
<!--Spring常用模块依赖结束-->
</dependencies> </project>
2.配置web.xml, 这里使用servlet3.1, 配置相关的applicationContext.xml, 这里是监听spring, 以及引用spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- *** 初始化Spring容器开始 *** -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- === 初始化Spring容器结束 === --> <!-- *** 初始化SpringMVC开始 *** -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- === 初始化SpringMVC结束 === -->
</web-app>
3. 配置 applicationContext.xml, 这里仅配置spring组件扫描,后期其他再继续配置
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 注解扫描:扫描@component,@service,@Repository等注解,指定com.gof -->
<context:component-scan base-package="com.gof" />
<!-- <context:annotation-config />仅能够在已经在已经注册过(applicationContext)的bean上面起作用。--> </beans>
4.配置spring-mvc.xml, 配置了注解,以及指定扫描的包, 以及指定spring mvc返回的文件目录格式等
<?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:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- spring mvc注解:@controller,@RequestMapping等 -->
<mvc:annotation-driven/> <!-- 对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。 -->
<mvc:default-servlet-handler/> <!-- 指定spring mvc 返回的文件格式后缀,目录, 也可以不指定,就进行移除-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".html"/>
<property name="contentType" value="text/html"/>
</bean> <!--只扫描@Controller注解类,否则影响事务-->
<context:component-scan base-package="com.gof" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> </beans>
5. 创建User.java
package com.gof.domain; import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = 1L; private String userId; private String userName; private String password; private String sex; private int age; public String getUserId() {
return userId;
} public void setUserId(String 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 String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} }
6.创建接口:IUserService
package com.gof.service; import com.gof.domain.User; public interface IUserService { public User getUserByUserName(String userName); }
7.创建实现类:UserService, 这里没有使用到数据,所以数据暂时写固定
package com.gof.service; import java.util.HashMap;
import java.util.Map; import org.springframework.stereotype.Component; import com.gof.domain.User; @Component
public class UserService implements IUserService{
/**
* 取user
*/
@Override
public User getUserByUserName(String userName) {
Map<String, User> userMap = new HashMap<String, User>();
//假设userName唯一
User userA = new User();
userA.setUserId("XXAFSFDxafdsafds");
userA.setUserName("jihy");
userA.setPassword("123456"); User userB= new User();
userA.setUserId("XXAFSFDxafdsafds");
userB.setUserName("jihy2");
userB.setPassword("123456"); userMap.put(userA.getUserName(), userA);
userMap.put(userB.getUserName(), userB); return userMap.get(userName);
} }
8.控制层:UserController.java
package com.gof.controller; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import com.gof.domain.JsonResponse;
import com.gof.domain.User;
import com.gof.service.IUserService; @Controller
public class LoginController {
@Autowired
private IUserService userService;
/**
* 登陆主页
* @return
*/
@RequestMapping(value="/loginIndex")
public String loginIndex(){ return "loginIndex";
}
/**
* 验证登陆请求
* @param userName
* @param password
* @return
*/
@RequestMapping(value="/login")
@ResponseBody
public JsonResponse login(@RequestParam String userName, @RequestParam String password){
JsonResponse response = new JsonResponse();
response.setStatus("ERROR");
User user = userService.getUserByUserName(userName);
if (user == null) {
return response;
}
if (!password.equals(user.getPassword())) {
return response;
}
response.setStatus("SUCCESS");
return response;
}
}
9.返回对象:JsonResponse.java
package com.gof.domain; import java.io.Serializable; public class JsonResponse implements Serializable{ private static final long serialVersionUID = 1L; private String status; private Object result; public String getStatus() {
return status;
} public void setStatus(String status) {
this.status = status;
} public Object getResult() {
return result;
} public void setResult(Object result) {
this.result = result;
} }
10.l登陆主页:loginIndex.html
<html>
<head>
<script type="text/javascript" src="./static/js/lib/jquery/jquery-1.8.2.js"></script>
</head>
<body>
<h2>Hello World!</h2> <form name="loginForm">
<input type="input" name="userName" id="userName" value="jihy"/>
<input type="password" name="password" id="password" value="123456"/>
<input type="button" name="提交"/>
</form>
</body>
<script type="text/javascript">
alert($("form").serialize());
$(function(){
$.ajax({
type:"POST",
url: "./login",
data: $("form").serialize(),
success: function(data){
alert(JSON.stringify(data));
}});
})
</script>
</html>
11.引用了jquery插件:
12:完成, 使用上面代码, 可以运行的项目!
2.搭建配置最简单的spring mvc 工程-基础版的更多相关文章
- 【Spring】搭建最简单的Spring MVC项目
每次需要Spring MVC的web项目测试一些东西时,都苦于手头上没有最简单的Spring MVC的web项目,现写一个. > 版本说明 首先要引入一些包,Spring的IOC.MVC包就不用 ...
- 【Spring】简单的Spring MVC入门例子
前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...
- 编写简单的spring mvc程序,在tomcat上部署
编写简单的spring mvc程序,在tomcat上部署 1 用java 配置spring mvc ,可以省去web.xmlpackage hello;import org.springframewo ...
- Spring MVC内容协商实现原理及自定义配置【享学Spring MVC】
每篇一句 在绝对力量面前,一切技巧都是浮云 前言 上文 介绍了Http内容协商的一些概念,以及Spring MVC内置的4种协商方式使用介绍.本文主要针对Spring MVC内容协商方式:从步骤.原理 ...
- 使用方法拦截机制在不修改原逻辑基础上为 spring MVC 工程添加 Redis 缓存
首先,相关文件:链接: https://pan.baidu.com/s/1H-D2M4RfXWnKzNLmsbqiQQ 密码: 5dzk 文件说明: redis-2.4.5-win32-win64.z ...
- intellij idea 12 搭建maven web项目 freemarker + spring mvc
配置spring mvc ,写这篇文章的时候spring已经出了4.0 这里还是用稳定的3.2.7.RELEASE,先把spring和freemarker配置好 1.spring mvc配置 在web ...
- Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...
- 在eclipse中配置一个简单的spring入门项目
spring是一个很优秀的基于Java的轻量级开源框架,为了解决企业级应用的复杂性而创建的,spring不仅可用于服务器端开发,从简单性.可测试性和松耦合性的角度,任何java应用程序都可以利用这个思 ...
- Spring学习(二)——使用Gradle构建一个简单的Spring MVC Web应用程序
1.新建一个Gradle工程(Project) 在新建工程窗口的左侧中选择 [Gradle],右侧保持默认选择,点击next,模块命名为VelocityDemo. 2.在该工程下新建一个 module ...
随机推荐
- Go语言之反射(一)
反射 反射是指在程序运行期对程序本身进行访问和修改的能力.程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分.在运行程序时,程序无法获取自身的信息.支持反射的语言可以在程序编译期将 ...
- App 设计技巧
http://www.360doc.com/content/14/1120/18/21412_426730809.shtml http://veryui.diandian.com/post/2013- ...
- Mac OS 系统占用储存空间太大怎么办?
存储空间 121 GB,系统就占用 106G,然后就是不断的弹窗提醒你! 解决方法: 终端先执行一下 du -sh * 查看具体是哪里使用了存储空间,一般都是 library 占用比较多的空间, 把可 ...
- CentOS7安装Code::Blocks
在CentOS7上安装Codelocks的过程. 1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum instal ...
- 04 JVM是如何执行方法调用的(下)
虚方法调用 Java 里所有非私有实例方法调用都会被编译成 invokevirtual 指令,而接口方法调用会被编译成 invokeinterface 指令.这两种指令,均属于 Java 虚拟机中的虚 ...
- 安装的 Python 版本太多互相干扰?pyenv 建议了解一下。
写在之前 我们都知道现在的 Python 有 Python2 和 Python3,但是由于各种乱七八糟的原因导致这俩哥们要长期共存,荣辱与共,尴尬的是这哥俩的差异还比较大,在很多时候我们可能要同时用到 ...
- Leetcode 552.学生出勤记录II
学生出勤记录II 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 109 + 7的值. 学生出勤记录是只包含以下三个字符的字符串: ' ...
- Map 中的EntrySet() ,Map的遍历
我们循环Map时一般用到EntrySet(),EntrySet() 返回的时Set集合(Set<Map.Entry<K, V>>). 那么这里的有Map.Entry< ...
- 多线程(实现Runnable接口)
/** * 创建一个子线程, 完成1-100之间自然数的输出,同样的主线程执行同样的操作 *创建多线程的第二种方式,通过实现的方式 * 继承和实现的方式对比 * 一,联系: * public cla ...
- 静态分析:IDA逆向代码段说明 text、idata、rdata、data
静态分析:IDA逆向代码段说明 text.idata.rdata.data 通常IDA对一个PE文件逆向出来的代码中, 存在四个最基本的段text.idata.rdata.data, 四个段为PE文件 ...