使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)
前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后组合成一个完整的spring MVC Web项目。
Spring环境的搭建
1.通过Maven可以轻松的配置,spring环境,具体pom文件如下所示
- <!--设置版本信息-->
- <properties>
- <file.encoding>UTF-8</file.encoding>
- <spring.version>4.2.1.RELEASE</spring.version>
- <mysql.version>5.1.20</mysql.version>
- <servlet.version>2.5</servlet.version>
- <commons-dbcp.version>1.4</commons-dbcp.version>
- <commons-pool.version>1.4</commons-pool.version>
- <aspectj.version>1.8.1</aspectj.version>
- </properties>
- <!--定义依赖-->
- <dependencies>
- <!--spring相关依赖-->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
- <!-- 数据库驱动依赖-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql.version}</version>
- </dependency>
- <!-- 连接池依赖-->
- <dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- <version>${commons-dbcp.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
- <version>${commons-pool.version}</version>
- </dependency>
- <!-- web类库依赖-->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>${servlet.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- <!-- 日志依赖-->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.17</version>
- <configuration>
- <parallel>methods</parallel>
- <threadCount>10</threadCount>
- </configuration>
- </plugin>
- </plugins>
- </build>
注:pom文件中除了spring所需jar包,还对数据库驱动等相关信息,进行了依赖配置。
2.在Resource目录下创建spring配置文件,如下图所示
3.由于需演示一个相对完整的Spring MVC Web项目,因此建立如下所示的目录结构
注:这里主要演示一个登录界面,当登录成功后,进入主界面(为了简单这里就不演示日志操作了)。因此接下来需要创建一个数据库。
4.创建数据库
- DROP DATABASE IF EXISTS springtestdb;
- CREATE DATABASE springtestdb DEFAULT CHARACTER SET utf8;
- USE springtestdb;
- ##建表
- CREATE TABLE `t_user` (
- `user_id` int(11) NOT NULL auto_increment,
- `user_name` varchar(30) default NULL,
- `password` varchar(32) default NULL,
- PRIMARY KEY (`user_id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
- ##插入初始化数据
- INSERT INTO t_user (user_name,password)
- VALUES('admin','');
- COMMIT;
5.编写相应代码
User:
- public class User implements Serializable
- {
- private int userid;
- private String username;
- private String password;
- 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;
- }
- @Override
- public String toString()
- {
- return "User[" +
- "userid=" + userid +
- ", username='" + username + '\'' +
- ", password='" + password + '\'' +
- ']';
- }
- }
UserDao:
- @Repository("userDao")
- public class UserDao
- {
- private static Logger logger = Logger.getLogger(UserDao.class);
- //如果直接使用注解进行属性的修饰,可以不用set函数
- @Resource(name = "jdbcTemplate")
- private JdbcTemplate jdbcTemplate;
- /**
- * 获取匹配用户的个数
- * @param username
- * @param password
- * @return
- */
- public int getMatchCount(String username, String password)
- {
- String querysql = "select count(*) from t_user where user_name=? and password=?";
- int rows = jdbcTemplate.queryForObject(querysql, Integer.class, username, password);
- logger.info("rows=" + rows);
- return rows;
- }
- }
UserService:
- @Transactional
- @Service("userService")
- public class UserService
- {
- //直接通过在属性上进行配置注入,就可以不用写set方法了
- @Resource(name = "userDao")
- private UserDao userDao;
- @Resource(name="loginlogDao")
- private LoginLogDao loginLogDao;
- /**
- * 判断用户名与密码是否正确
- * @param useranme
- * @param password
- * @return
- */
- public boolean hasMatchUser(String useranme,String password)
- {
- int matchcount=userDao.getMatchCount(useranme,password);
- return matchcount>0;
- }
- }
LoginController:
- @Controller("loginController")
- public class LoginController
- {
- private static Logger logger=Logger.getLogger(LoginController.class);
- @Resource(name = "userService")
- private UserService userService;
- @RequestMapping(value = "/index.html") //默认会 访问index.html页面
- public String loginPage()
- {
- return "login";
- }
- @RequestMapping(value = "/loginCheck.html")
- public ModelAndView loginCheck(HttpServletRequest request, LoginCommand loginCommand)
- {
- String username=loginCommand.getUsername();
- String password=loginCommand.getPassword();
- boolean isvaliduser = userService.hasMatchUser(username, password);
- if (!isvaliduser)
- {
- return new ModelAndView("login", "error", "用户名或密码错误");
- }
- else
- {
- logger.info("username="+username+" password="+password);
- request.getSession().setAttribute("user", user);
- return new ModelAndView("main");
- }
- }
- }
LoginCommand:
- public class LoginCommand
- {
- private String username;
- private String password;
- 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;
- }
- }
login.jsp:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <html>
- <head>
- <title>测试</title>
- </head>
- <body>
- <c:if test="${!empty error}">
- <font color="red"><c:out value="${error}" /></font>
- </c:if>
- <form action="<c:url value="/loginCheck.html"/>" method="post">
- 用户名:
- <input type="text" name="username">
- <br>
- 密 码:
- <input type="password" name="password">
- <br>
- <input type="submit" value="登录" />
- <input type="reset" value="重置" />
- </form>
- </body>
- </html>
main.jsp:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>测试</title>
- </head>
- <body>
- ${user.username},欢迎您!
- </body>
- </html>
6.进行相应配置
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-4.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
- <!-- 开启注解-->
- <context:component-scan base-package="com.springlearning"/>
- <!-- 配置数据源-->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close"
- p:driverClassName="com.mysql.jdbc.Driver"
- p:url="jdbc:mysql://localhost:3307/springtestdb"
- p:username="root"
- p:password=""/>
- <!-- 配置jdbcTemplate-->
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
- p:dataSource-ref="dataSource"/>
- <!-- 配置jdbc事务管理器-->
- <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <!-- 注入数据源 -->
- <property name="dataSource" ref="dataSource"/>
- </bean>
- <aop:config proxy-target-class="true">
- <aop:pointcut id="serviceMethod"
- expression="(execution(* com.springlearning.service..*(..)))" />
- <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice" />
- </aop:config>
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <tx:method name="*" />
- </tx:attributes>
- </tx:advice>
- </beans>
web.xml配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app 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_2_5.xsd"
- version="2.5" id="webapp_id">
- <!--配置监听器 --> <!--以便在服务器启动的时候,加载spring配置文件-->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!--配置spring配置文件-->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springconfig.xml</param-value>
- </context-param>
- <servlet>
- <servlet-name>learning</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>3</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>learning</servlet-name>
- <url-pattern>*.html</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file> <!--这里配置的默认页面和LoginController中对应名称需要一致-->
- </welcome-file-list>
- </web-app>
learning-servlet.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: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.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.0.xsd">
- <!-- 开启web包的spring注解-->
- <context:component-scan base-package="com.springlearning.web"/>
- <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- p:viewClass="org.springframework.web.servlet.view.JstlView"
- p:prefix="/WEB-INF/jsp/"
- p:suffix=".jsp"/>
- </beans>
至此,编写和配置完所有文件,下面进行发布(不要忘记Put into Output Root,具体步骤请参看看上一篇文章)。当正确输入用户名和密码后,效果如下:
至此通过IDEA与Maven搭建Spring MVC Web项目成功。
by Shawn Chen,2018.1.11日,下午。
使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)的更多相关文章
- 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)
前言:原来一直使用MyEclipse,换工作后,新公司使用IDEA,初识IDEA发现,哇,它的快捷键可真多啊,但是一路用下来,觉得非常的好用,特别是利用Maven管理,那简直叫一个爽.当然笔者在使用过 ...
- 使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境
使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境 前言:原来一直使用Eclipse,换工作后使用IDEA,初识IDEA发现,哇,它的快捷键可真多啊,但是一路用下来,觉得 ...
- PyCharm社区版+Django搭建web开发环境-2
接上一篇:PyCharm社区版+Django搭建web开发环境-1 1. 创建好django项目并建立app应用:web 2. setting.py:配置app应用 INSTALLED_APPS = ...
- 【Java Web开发学习】Spring MVC 使用HTTP信息转换器
[Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
[Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- 【Java Web开发学习】Spring MVC异常统一处理
[Java Web开发学习]Spring MVC异常统一处理 文采有限,若有错误,欢迎留言指正. 转载:https://www.cnblogs.com/yangchongxing/p/9271900. ...
- 搭建Web开发环境JavaEE_Eclipse
1. 下载和安装1.1 下载JDK在Java官方网站下载最新版本的 Java SE: http://www.oracle.com/technetwork/java/javase/downloads/ ...
随机推荐
- Centos 6.8 定时任务Crontab服务
一,crontab服务的简介 二.安装cron服务 安装cron服务 : --yum install vixie-cron --yum install crontabs 检出cron服务 检查cron ...
- C# Winform打包部署时添加注册表信息实现开机自启动
1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下 2. 写入注册表的方式有两种 a.在生成安装程序时配置 b.在程序运行时,动态配置 方法一:使用VS2010自带的打包 ...
- [android] sharedPreference入门
/********************2016年5月6日 更新**************************************/ 知乎:Android 如何实现判断用户首次使用,比如首 ...
- 【Linux】nginx常用命令
相关内容链接 Centos之安装Nginx及注意事项 [nginx]详细配置说明 nginx常用命令 [重新加载配置]sudo nginx -s reload [打开nginx配置]sudo vim ...
- 反射demo(拷贝一个对象)
经过了上一次对反射的初步认知,最近又接触到了后,做了一个小demo,感觉这次带了一点理解去做的,比第一次接触反射好了许多. 上次学习的链接,有一些反射用的基础语句.https://www.cnblog ...
- JS实现缓动效果-让div运动起来
var tween = { linear:function(t,b,c,d){ return c*t/d + b; }, easeIn:function(t,b,c,d){ return c * ( ...
- 洛谷P3247 [HNOI2016]最小公倍数(分块 带撤销加权并查集)
题意 题目链接 给出一张带权无向图,每次询问\((u, v)\)之间是否存在一条路径满足\(max(a) = A, max(b) = B\) Sol 这题居然是分块..想不到想不到..做这题的心路历程 ...
- https遇到自签名证书/信任证书
对于CA机构颁发的证书Okhttp默认支持 可以直接访问 但是对于自定义的证书就不可以了(如:https ://kyfw.12306.cn/otn/), 需要加入Trust 下面分两部分来写,一是信任 ...
- Django+MongoDB批量插入数据
在百万级和千万级数据级别进行插入,pymongo的insert_many()方法有着很强的优势.原因是每次使用insert_one()方法进行插入数据,都是要对数据库服务器进行一次访问,而这样的访问是 ...
- ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
一.前言 1.本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Cor ...