版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/california94/article/details/52669737
关于spring、springmvc、mybatis的相关资料需要提前了解一下。我也只是初学者,就不介绍了。
我使用的是idea 如果有用eclipse也是类似
新建一个maven项目
修改pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hp</groupId>
<artifactId>bookworm-spring</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>bookworm-spring Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- spring版本号 -->
<spring.version>3.2.4.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.4</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.9</log4j.version>
</properties>
<dependencies>
<!-- spring核心包 -->
<!-- springframe start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</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-jdbc</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-aop</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-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- springframe end -->
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!-- 阿里巴巴数据源包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.2</version>
</dependency>
<!-- json数据 -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!--servlet 包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!-- log end -->
</dependencies>
<build>
<finalName>bookworm-spring</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${basedir}/target/classes</targetPath>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
上面整个文件我都贴出来了,如果大家使用记得请改项目名字,或者视情况粘贴。
下面是我整个项目的截图
大家创建项目时可以仿着创建。
controller 、dao、service、model这是springmvc的四个层,关于他们的介绍大家可以参考 点击打开链接
conf存放的是springmvc spring mybatis 的配置文件 mapper存放的是xml格式的mapper它是mybatis范畴 点击打开链接
其实spring.xml spring-mvc.xml spring_mybatis.xml 可以配置到一个里面。只不过这样为了清楚地看
我是用Mysql数据库 新建了一个userinfo表里面包括userid username password
下面我贴出controller 、dao、service、model里的代码,login是注册功能,其他的是注册功能
controller层
package controller; import model.UserInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import service.BookWormSvc; import until.JsonUtil; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2016/9/22. */ @Controller @RequestMapping("/") public class bookwormController { @Autowired BookWormSvc bookWormSvc; public void initUserSvc(){ ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:conf/spring.xml" , "classpath:conf/spring_mybatis.xml"}); bookWormSvc = (BookWormSvc) context.getBean("bookWormSvcImpl"); } @RequestMapping("index") public String index(){return "login";} @ResponseBody @RequestMapping("login") public String login(HttpServletRequest request)throws Exception{ initUserSvc(); String username = request.getParameter("username"); String password = request.getParameter("password"); UserInfo user = bookWormSvc.login(username,password); //如果user不为空 则登陆成功。状态码:1表示登陆成功,0表示登录失败 if(user!=null){ HttpSession session=request.getSession(); session.setAttribute("userinfo",user); return resultJson(1,null); }else { return resultJson(0,"名户名或密码不正确"); } } @ResponseBody @RequestMapping("register") public String register(HttpServletRequest request )throws Exception{ initUserSvc(); String username=request.getParameter("username"); String password=request.getParameter("password"); int registerResult=bookWormSvc.register(username,password); if(registerResult==1){ return resultJson(1,"注册成功"); }else { return resultJson(0,"注册失败"); } } @ResponseBody @RequestMapping("selectUserInfoByusername") public String selectUserInfoByusername(HttpServletRequest request)throws Exception{ initUserSvc(); String username=request.getParameter("username"); UserInfo user=bookWormSvc.selectUserInfoByusername(username); if(user!=null){ return resultJson(1,user); }else { return resultJson(0,"改用户不存在"); } } //返回的json 一个是状态码,另一个是返回信息 public String resultJson(int resultCode,Object resultObject)throws Exception{ Map<String,Object> resultMap=new HashMap<String, Object>(); resultMap.put("resultCode",resultCode); resultMap.put("resultObject",resultObject); String result = JsonUtil.obj2json(resultMap); return result; } }我的想法是controller接收到请求后进行处理,处理后将结果用json封装返回给jsp
dao层代码
package dao; import model.UserInfo; import org.apache.ibatis.annotations.Param; /** * Created by Administrator on 2016/9/22. */ public interface BookWormDao { UserInfo login(@Param("username") String username, @Param("password") String password); int register(@Param("username") String username,@Param("password") String password); UserInfo selectUserInfoByusername(String username); }model层代码
package model; public class UserInfo { private Integer userid; private String username; private String password; public Integer getUserid() { return userid; } public void setUserid(Integer userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username == null ? null : username.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); } }
service层里面还包括一个实现,因为service采用的接口方法
package service; import model.UserInfo; /** * Created by Administrator on 2016/9/22. */ public interface BookWormSvc { UserInfo login(String username,String password); int register(String username,String password); UserInfo selectUserInfoByusername(String username); }
package service.serviceImpl; import dao.BookWormDao; import model.UserInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import service.BookWormSvc; /** * Created by Administrator on 2016/9/22. */ @Service public class BookWormSvcImpl implements BookWormSvc { @Autowired BookWormDao bookWormDao; @Override public UserInfo login(String username, String password) { return bookWormDao.login(username,password); } @Override public int register(String username, String password) { return bookWormDao.register(username,password); } @Override public UserInfo selectUserInfoByusername(String username) { return bookWormDao.selectUserInfoByusername(username); } }jsonutil工具
package until; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by Administrator on 2016/9/19. */ public class JsonUtil { private final static ObjectMapper objectMapper = new ObjectMapper(); private JsonUtil() { } public static ObjectMapper getInstance() { return objectMapper; } /** * javaBean,list,array convert to json string */ public static String obj2json(Object obj) throws Exception { return objectMapper.writeValueAsString(obj); } /** * json string convert to javaBean */ public static <T> T json2pojo(String jsonStr, Class<T> clazz) throws Exception { return objectMapper.readValue(jsonStr, clazz); } /** * json string convert to map */ public static <T> Map<String, Object> json2map(String jsonStr) throws Exception { return objectMapper.readValue(jsonStr, Map.class); } /** * json string convert to map with javaBean */ public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz) throws Exception { Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr, new TypeReference<Map<String, T>>() { }); Map<String, T> result = new HashMap<String, T>(); for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) { result.put(entry.getKey(), map2pojo(entry.getValue(), clazz)); } return result; } /** * json array string convert to list with javaBean */ public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception { List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr, new TypeReference<List<T>>() { }); List<T> result = new ArrayList<T>(); for (Map<String, Object> map : list) { result.add(map2pojo(map, clazz)); } return result; } /** * map convert to javaBean */ public static <T> T map2pojo(Map map, Class<T> clazz) { return objectMapper.convertValue(map, clazz); } }下面是配置文件代码
jdbc_driverClassName=com.mysql.jdbc.Driver jdbc_url=jdbc:mysql://localhost:3306/bookworm?useUnicode=true&characterEncoding=utf-8 jdbc_username=root jdbc_password=root上面填好你自己的数据库名称和密码
下面是log4j
### set log levels ### #log4j.rootLogger = debug , stdout , D , E log4j.rootLogger = e , stdout , d ### output to the console ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout #log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n ### Output to the log file ### log4j.appender.d = org.apache.log4j.DailyRollingFileAppender log4j.appender.d.File = ${springmvc.root}/WEB-INF/logs/log.log log4j.appender.d.Append = true log4j.appender.d.Threshold = DEBUG log4j.appender.d.layout = org.apache.log4j.PatternLayout log4j.appender.d.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### Save exception information to separate file ### log4j.appender.e = org.apache.log4j.DailyRollingFileAppender log4j.appender.e.File = ${springmvc.root}/WEB-INF/logs/error.log log4j.appender.e.Append = true log4j.appender.e.Threshold = ERROR log4j.appender.e.layout = org.apache.log4j.PatternLayout log4j.appender.e.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%nmybatis-config
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 命名空间 --> <typeAliases> <typeAlias alias="UserInfo" type="model.UserInfo"/> </typeAliases> <!-- 映射map --> <mappers> </mappers> </configuration>spring.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 引入jdbc配置文件 --> <context:property-placeholder location="classpath:conf/jdbc.properties"/> <!-- 扫描文件(自动将servicec层注入) --> <context:component-scan base-package="service"/> </beans>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 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-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <mvc:annotation-driven /> <!-- 扫描controller(controller层注入) --> <context:component-scan base-package="controller"/> <!-- 避免IE在ajax请求时,返回json出现下载 --> <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 对模型视图添加前后缀 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/page/" p:suffix=".jsp"/> </beans>
spring_mybatis
<?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" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close" > <property name="driverClassName"> <value>${jdbc_driverClassName}</value> </property> <property name="url"> <value>${jdbc_url}</value> </property> <property name="username"> <value>${jdbc_username}</value> </property> <property name="password"> <value>${jdbc_password}</value> </property> <!-- 连接池最大使用连接数 --> <property name="maxActive"> <value>20</value> </property> <!-- 初始化连接大小 --> <property name="initialSize"> <value>1</value> </property> <!-- 获取连接最大等待时间 --> <property name="maxWait"> <value>60000</value> </property> <!-- 连接池最大空闲 --> <property name="maxIdle"> <value>20</value> </property> <!-- 连接池最小空闲 --> <property name="minIdle"> <value>3</value> </property> <!-- 自动清除无用连接 --> <property name="removeAbandoned"> <value>true</value> </property> <!-- 清除无用连接的等待时间 --> <property name="removeAbandonedTimeout"> <value>180</value> </property> <!-- 连接属性 --> <property name="connectionProperties"> <value>clientEncoding=UTF-8</value> </property> </bean> <!-- mybatis文件配置,扫描所有mapper文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource" p:configLocation="classpath:conf/mybatis-config.xml" p:mapperLocations="classpath:mapper/*.xml"/><!-- configLocation为mybatis属性 mapperLocations为所有mapper--> <!-- spring与mybatis整合配置,扫描所有dao --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="dao" p:sqlSessionFactoryBeanName="sqlSessionFactory"/> <!-- 对数据源进行事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource"/> </beans>mapper
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dao.BookWormDao"> <select id="login" resultType="model.UserInfo"> SELECT * from userinfo WHERE username=#{username, jdbcType=VARCHAR} AND password=#{password, jdbcType=VARCHAR} </select> <select id="selectUserInfoByusername" resultType="model.UserInfo" parameterType="String"> SELECT * from userinfo where username=#{username} </select> <select id="selectUserInfoByuserid" resultType="model.UserInfo" parameterType="int"> SELECT * from userinfo where userid=#{userid} </select> <insert id="register" > INSERT INTO userinfo (username,password) VALUES(#{username, jdbcType=VARCHAR},#{password, jdbcType=VARCHAR}) </insert> </mapper>
page里存放的自己定义的jsp页面
页面使用的Bootstrap来创建的UI 其实它相当于一个css文件,里面帮你定义好了控件的样式
login.jsp
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/9/22 Time: 15:51 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <title>书虫登陆</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script> <!-- 新 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css"> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="page-header text-primary"> <h1>欢迎登陆书虫</h1> </div> </div> <div class="row"> <div class="col-md-6"></div> <div class="col-md-6"> <div class="row"> <div class="page-header text-primary"> <h2>用户登陆/注册</h2> </div> </div> <br><br> <div class="row"> <div class="input-group input-group-lg"> <span class="input-group-addon glyphicon glyphicon-user " style="font-size: 20px">用户名:</span> <input type="text" class="form-control" placeholder="请输入用户名" id="username"> </div> </div> <br><br> <div class="row"> <div class="input-group input-group-lg"> <span class="input-group-addon glyphicon glyphicon-asterisk " style="font-size: 20px">密 码:</span> <input type="password" class="form-control" placeholder="请输入用密码" id="password"> </div> <br><br> </div> <div class="row"> <button type="button" class="btn-lg btn-primary col-md-3 col-md-offset-1" id="login">登陆</button> <button type="button" class="btn-lg btn-primary col-md-3 col-md-offset-2" id="register">注册</button> </div> <p class="text-danger" id="resultMessage"></p> </div> </div> </div> </body> <script type="text/javascript" src="<%=path %>/page/js/login.js"></script> </html>login.js
/** * Created by Administrator on 2016/9/22. */ $(function () { $("#login").click(function () { var data = { username:$("#username").val(), password:$("#password").val() } if((data.username=="") || (data.password=="")){ alert("用户名或密码不能为空"); return ; } $.ajax({ type:"post", url:getRootPath()+"/login.do", data:data, dataType:"json", success:function (resultJson) { if(resultJson.resultCode==1){ //登陆成功 window.location.href=getRootPath()+"/page/success.jsp"; }else{//登录失败 $("#resultMessage").html(resultJson.resultObject); } } }); }); $("#register").click(function () { window.location.href=getRootPath()+"/page/register.jsp"; }); }); function getRootPath() { //获取当前网址,如: /meun.jsp var curWwwPath = window.document.location.href; //获取主机地址之后的目录,如: proj/meun.jsp var pathName = window.document.location.pathname; var pos = curWwwPath.indexOf(pathName); //获取主机地址,如: http://localhost:8083 var localhostPath = curWwwPath.substring(0, pos); //获取带"/"的项目名,如:/proj var projectName = pathName.substring(0, pathName.substr(1).indexOf( '/') + 1); return (localhostPath + projectName); }success.jsp
<%@ page import="model.UserInfo" %><%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/9/22 Time: 17:32 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="model.UserInfo"%> <% UserInfo user=(UserInfo) session.getAttribute("userinfo"); %> <html> <head> <title>success</title> </head> <body> <h1>欢迎<%=user.getUsername() %>登陆</h1> </body> </html>
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Archetype Created Web Application</display-name> <!-- 读取spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/spring.xml; classpath:conf/spring_mybatis.xml </param-value> </context-param> <!-- 设计路径变量值 --> <context-param> <param-name>webAppRootKey</param-name> <param-value>springmvc.root</param-value> </context-param> <!-- Spring字符集过滤器 --> <filter> <filter-name>SpringEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SpringEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 日志记录 --> <context-param> <!-- 日志配置文件路径 --> <param-name>log4jConfigLocation</param-name> <param-value>classpath:conf/log4j.properties</param-value> </context-param> <context-param> <!-- 日志页面的刷新间隔 --> <param-name>log4jRefreshInterval</param-name> <param-value>6000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- springMVC核心配置 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/spring-mvc.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!--session超时定义 单位分钟--> <session-config> <session-timeout>15</session-timeout> </session-config> <welcome-file-list> <welcome-file>/page/login.jsp</welcome-file> </welcome-file-list> </web-app>代码我都贴出来了,大家最好看着自己敲一遍,并参考网上相关的资料,了解一下每块的作用。我也只是个小白,大家商量着进步。