当前位置:   article > 正文

SSM —— 不使用maven和springboot的简单的ssm框架部署(只加了日志)_ssm项目搭建不使用maven

ssm项目搭建不使用maven

项目结构:

怎么创建自定义日志参考另一篇博客:https://blog.csdn.net/DGH2430284817/article/details/85809862

SSM框架需要的包我就不提供了

步骤:

创建web项目:名字自己取。我这是SSM_Test

创建控制器:

DoorController.java

  1. package com.test.controller;
  2. import java.net.UnknownHostException;
  3. import org.apache.log4j.Logger;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.Model;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import com.ceb.dgh.bo.Door;
  9. import com.qut.util.LoggerUtil;
  10. import com.test.service.DoorService;
  11. @RequestMapping("/door")
  12. @Controller
  13. public class DoorController {
  14. private static Logger log = LoggerUtil.getLogger(DoorController.class);
  15. @Autowired
  16. private DoorService doorService;
  17. @RequestMapping("/open")
  18. public String login( Door door , Model model) throws UnknownHostException{
  19. log.info("进入控制器door/open,参数:" + door.toString());
  20. door = doorService.DoOpen(door.getName());
  21. System.out.println("Door:" + door.toString());
  22. model.addAttribute("name",door.getName());
  23. model.addAttribute("pass",door.getPass());
  24. return "result";
  25. }
  26. }

创建业务逻辑层:

DoorService .java

  1. package com.test.service;
  2. import com.ceb.dgh.bo.Door;
  3. public interface DoorService {
  4. public Door DoOpen(String doorName);
  5. }

DoorServiceImpl.java

  1. package com.test.service.impl;
  2. import org.apache.log4j.Logger;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.transaction.annotation.Transactional;
  6. import com.ceb.dgh.bo.Door;
  7. import com.ceb.dgh.mapper.DoorMapper;
  8. import com.qut.util.LoggerUtil;
  9. import com.test.controller.DoorController;
  10. import com.test.service.DoorService;
  11. @Service
  12. @Transactional(rollbackFor=Exception.class)
  13. public class DoorServiceImpl implements DoorService{
  14. private static Logger log = LoggerUtil.getLogger(DoorController.class);
  15. @Autowired
  16. private DoorMapper doorMapper;
  17. @Override
  18. public Door DoOpen(String doorName) {
  19. log.info("进入业务层DoOpen方法");
  20. return doorMapper.selectByPrimaryKey(doorName);
  21. }
  22. }

创建Dao层:

       创建Mysql数据库test,添加表door:

         加一条数据:

创建连接信息文件db.properties:

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
  3. jdbc.username=root
  4. jdbc.password=root

创建BO类和Mapper和数据库xml文件:

这个有很多种方法可以自动创建,不需要手写,我直接给代码:

Door.java:

  1. package com.ceb.dgh.bo;
  2. public class Door {
  3. private String name;
  4. private String pass;
  5. @Override
  6. public String toString() {
  7. return "Door [name=" + name + ", pass=" + pass + "]";
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name == null ? null : name.trim();
  14. }
  15. public String getPass() {
  16. return pass;
  17. }
  18. public void setPass(String pass) {
  19. this.pass = pass == null ? null : pass.trim();
  20. }
  21. }

DoorExample.java

  1. package com.ceb.dgh.bo;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class DoorExample {
  5. protected String orderByClause;
  6. protected boolean distinct;
  7. protected List<Criteria> oredCriteria;
  8. public DoorExample() {
  9. oredCriteria = new ArrayList<Criteria>();
  10. }
  11. public void setOrderByClause(String orderByClause) {
  12. this.orderByClause = orderByClause;
  13. }
  14. public String getOrderByClause() {
  15. return orderByClause;
  16. }
  17. public void setDistinct(boolean distinct) {
  18. this.distinct = distinct;
  19. }
  20. public boolean isDistinct() {
  21. return distinct;
  22. }
  23. public List<Criteria> getOredCriteria() {
  24. return oredCriteria;
  25. }
  26. public void or(Criteria criteria) {
  27. oredCriteria.add(criteria);
  28. }
  29. public Criteria or() {
  30. Criteria criteria = createCriteriaInternal();
  31. oredCriteria.add(criteria);
  32. return criteria;
  33. }
  34. public Criteria createCriteria() {
  35. Criteria criteria = createCriteriaInternal();
  36. if (oredCriteria.size() == 0) {
  37. oredCriteria.add(criteria);
  38. }
  39. return criteria;
  40. }
  41. protected Criteria createCriteriaInternal() {
  42. Criteria criteria = new Criteria();
  43. return criteria;
  44. }
  45. public void clear() {
  46. oredCriteria.clear();
  47. orderByClause = null;
  48. distinct = false;
  49. }
  50. protected abstract static class GeneratedCriteria {
  51. protected List<Criterion> criteria;
  52. protected GeneratedCriteria() {
  53. super();
  54. criteria = new ArrayList<Criterion>();
  55. }
  56. public boolean isValid() {
  57. return criteria.size() > 0;
  58. }
  59. public List<Criterion> getAllCriteria() {
  60. return criteria;
  61. }
  62. public List<Criterion> getCriteria() {
  63. return criteria;
  64. }
  65. protected void addCriterion(String condition) {
  66. if (condition == null) {
  67. throw new RuntimeException("Value for condition cannot be null");
  68. }
  69. criteria.add(new Criterion(condition));
  70. }
  71. protected void addCriterion(String condition, Object value, String property) {
  72. if (value == null) {
  73. throw new RuntimeException("Value for " + property + " cannot be null");
  74. }
  75. criteria.add(new Criterion(condition, value));
  76. }
  77. protected void addCriterion(String condition, Object value1, Object value2, String property) {
  78. if (value1 == null || value2 == null) {
  79. throw new RuntimeException("Between values for " + property + " cannot be null");
  80. }
  81. criteria.add(new Criterion(condition, value1, value2));
  82. }
  83. public Criteria andNameIsNull() {
  84. addCriterion("name is null");
  85. return (Criteria) this;
  86. }
  87. public Criteria andNameIsNotNull() {
  88. addCriterion("name is not null");
  89. return (Criteria) this;
  90. }
  91. public Criteria andNameEqualTo(String value) {
  92. addCriterion("name =", value, "name");
  93. return (Criteria) this;
  94. }
  95. public Criteria andNameNotEqualTo(String value) {
  96. addCriterion("name <>", value, "name");
  97. return (Criteria) this;
  98. }
  99. public Criteria andNameGreaterThan(String value) {
  100. addCriterion("name >", value, "name");
  101. return (Criteria) this;
  102. }
  103. public Criteria andNameGreaterThanOrEqualTo(String value) {
  104. addCriterion("name >=", value, "name");
  105. return (Criteria) this;
  106. }
  107. public Criteria andNameLessThan(String value) {
  108. addCriterion("name <", value, "name");
  109. return (Criteria) this;
  110. }
  111. public Criteria andNameLessThanOrEqualTo(String value) {
  112. addCriterion("name <=", value, "name");
  113. return (Criteria) this;
  114. }
  115. public Criteria andNameLike(String value) {
  116. addCriterion("name like", value, "name");
  117. return (Criteria) this;
  118. }
  119. public Criteria andNameNotLike(String value) {
  120. addCriterion("name not like", value, "name");
  121. return (Criteria) this;
  122. }
  123. public Criteria andNameIn(List<String> values) {
  124. addCriterion("name in", values, "name");
  125. return (Criteria) this;
  126. }
  127. public Criteria andNameNotIn(List<String> values) {
  128. addCriterion("name not in", values, "name");
  129. return (Criteria) this;
  130. }
  131. public Criteria andNameBetween(String value1, String value2) {
  132. addCriterion("name between", value1, value2, "name");
  133. return (Criteria) this;
  134. }
  135. public Criteria andNameNotBetween(String value1, String value2) {
  136. addCriterion("name not between", value1, value2, "name");
  137. return (Criteria) this;
  138. }
  139. public Criteria andPassIsNull() {
  140. addCriterion("pass is null");
  141. return (Criteria) this;
  142. }
  143. public Criteria andPassIsNotNull() {
  144. addCriterion("pass is not null");
  145. return (Criteria) this;
  146. }
  147. public Criteria andPassEqualTo(String value) {
  148. addCriterion("pass =", value, "pass");
  149. return (Criteria) this;
  150. }
  151. public Criteria andPassNotEqualTo(String value) {
  152. addCriterion("pass <>", value, "pass");
  153. return (Criteria) this;
  154. }
  155. public Criteria andPassGreaterThan(String value) {
  156. addCriterion("pass >", value, "pass");
  157. return (Criteria) this;
  158. }
  159. public Criteria andPassGreaterThanOrEqualTo(String value) {
  160. addCriterion("pass >=", value, "pass");
  161. return (Criteria) this;
  162. }
  163. public Criteria andPassLessThan(String value) {
  164. addCriterion("pass <", value, "pass");
  165. return (Criteria) this;
  166. }
  167. public Criteria andPassLessThanOrEqualTo(String value) {
  168. addCriterion("pass <=", value, "pass");
  169. return (Criteria) this;
  170. }
  171. public Criteria andPassLike(String value) {
  172. addCriterion("pass like", value, "pass");
  173. return (Criteria) this;
  174. }
  175. public Criteria andPassNotLike(String value) {
  176. addCriterion("pass not like", value, "pass");
  177. return (Criteria) this;
  178. }
  179. public Criteria andPassIn(List<String> values) {
  180. addCriterion("pass in", values, "pass");
  181. return (Criteria) this;
  182. }
  183. public Criteria andPassNotIn(List<String> values) {
  184. addCriterion("pass not in", values, "pass");
  185. return (Criteria) this;
  186. }
  187. public Criteria andPassBetween(String value1, String value2) {
  188. addCriterion("pass between", value1, value2, "pass");
  189. return (Criteria) this;
  190. }
  191. public Criteria andPassNotBetween(String value1, String value2) {
  192. addCriterion("pass not between", value1, value2, "pass");
  193. return (Criteria) this;
  194. }
  195. }
  196. public static class Criteria extends GeneratedCriteria {
  197. protected Criteria() {
  198. super();
  199. }
  200. }
  201. public static class Criterion {
  202. private String condition;
  203. private Object value;
  204. private Object secondValue;
  205. private boolean noValue;
  206. private boolean singleValue;
  207. private boolean betweenValue;
  208. private boolean listValue;
  209. private String typeHandler;
  210. public String getCondition() {
  211. return condition;
  212. }
  213. public Object getValue() {
  214. return value;
  215. }
  216. public Object getSecondValue() {
  217. return secondValue;
  218. }
  219. public boolean isNoValue() {
  220. return noValue;
  221. }
  222. public boolean isSingleValue() {
  223. return singleValue;
  224. }
  225. public boolean isBetweenValue() {
  226. return betweenValue;
  227. }
  228. public boolean isListValue() {
  229. return listValue;
  230. }
  231. public String getTypeHandler() {
  232. return typeHandler;
  233. }
  234. protected Criterion(String condition) {
  235. super();
  236. this.condition = condition;
  237. this.typeHandler = null;
  238. this.noValue = true;
  239. }
  240. protected Criterion(String condition, Object value, String typeHandler) {
  241. super();
  242. this.condition = condition;
  243. this.value = value;
  244. this.typeHandler = typeHandler;
  245. if (value instanceof List<?>) {
  246. this.listValue = true;
  247. } else {
  248. this.singleValue = true;
  249. }
  250. }
  251. protected Criterion(String condition, Object value) {
  252. this(condition, value, null);
  253. }
  254. protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
  255. super();
  256. this.condition = condition;
  257. this.value = value;
  258. this.secondValue = secondValue;
  259. this.typeHandler = typeHandler;
  260. this.betweenValue = true;
  261. }
  262. protected Criterion(String condition, Object value, Object secondValue) {
  263. this(condition, value, secondValue, null);
  264. }
  265. }
  266. }

DoorMapper.java

  1. package com.ceb.dgh.mapper;
  2. import com.ceb.dgh.bo.Door;
  3. import com.ceb.dgh.bo.DoorExample;
  4. import java.util.List;
  5. import org.apache.ibatis.annotations.Param;
  6. public interface DoorMapper {
  7. int countByExample(DoorExample example);
  8. int deleteByExample(DoorExample example);
  9. int deleteByPrimaryKey(String name);
  10. int insert(Door record);
  11. int insertSelective(Door record);
  12. List<Door> selectByExample(DoorExample example);
  13. Door selectByPrimaryKey(String name);
  14. int updateByExampleSelective(@Param("record") Door record, @Param("example") DoorExample example);
  15. int updateByExample(@Param("record") Door record, @Param("example") DoorExample example);
  16. int updateByPrimaryKeySelective(Door record);
  17. int updateByPrimaryKey(Door record);
  18. }

DoorMapper.xml 

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.ceb.dgh.mapper.DoorMapper" >
  4. <resultMap id="BaseResultMap" type="com.ceb.dgh.bo.Door" >
  5. <id column="name" property="name" jdbcType="CHAR" />
  6. <result column="pass" property="pass" jdbcType="CHAR" />
  7. </resultMap>
  8. <sql id="Example_Where_Clause" >
  9. <where >
  10. <foreach collection="oredCriteria" item="criteria" separator="or" >
  11. <if test="criteria.valid" >
  12. <trim prefix="(" suffix=")" prefixOverrides="and" >
  13. <foreach collection="criteria.criteria" item="criterion" >
  14. <choose >
  15. <when test="criterion.noValue" >
  16. and ${criterion.condition}
  17. </when>
  18. <when test="criterion.singleValue" >
  19. and ${criterion.condition} #{criterion.value}
  20. </when>
  21. <when test="criterion.betweenValue" >
  22. and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
  23. </when>
  24. <when test="criterion.listValue" >
  25. and ${criterion.condition}
  26. <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
  27. #{listItem}
  28. </foreach>
  29. </when>
  30. </choose>
  31. </foreach>
  32. </trim>
  33. </if>
  34. </foreach>
  35. </where>
  36. </sql>
  37. <sql id="Update_By_Example_Where_Clause" >
  38. <where >
  39. <foreach collection="example.oredCriteria" item="criteria" separator="or" >
  40. <if test="criteria.valid" >
  41. <trim prefix="(" suffix=")" prefixOverrides="and" >
  42. <foreach collection="criteria.criteria" item="criterion" >
  43. <choose >
  44. <when test="criterion.noValue" >
  45. and ${criterion.condition}
  46. </when>
  47. <when test="criterion.singleValue" >
  48. and ${criterion.condition} #{criterion.value}
  49. </when>
  50. <when test="criterion.betweenValue" >
  51. and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
  52. </when>
  53. <when test="criterion.listValue" >
  54. and ${criterion.condition}
  55. <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
  56. #{listItem}
  57. </foreach>
  58. </when>
  59. </choose>
  60. </foreach>
  61. </trim>
  62. </if>
  63. </foreach>
  64. </where>
  65. </sql>
  66. <sql id="Base_Column_List" >
  67. name, pass
  68. </sql>
  69. <select id="selectByExample" resultMap="BaseResultMap" parameterType="com.ceb.dgh.bo.DoorExample" >
  70. select
  71. <if test="distinct" >
  72. distinct
  73. </if>
  74. <include refid="Base_Column_List" />
  75. from door
  76. <if test="_parameter != null" >
  77. <include refid="Example_Where_Clause" />
  78. </if>
  79. <if test="orderByClause != null" >
  80. order by ${orderByClause}
  81. </if>
  82. </select>
  83. <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
  84. select
  85. <include refid="Base_Column_List" />
  86. from door
  87. where name = #{name,jdbcType=CHAR}
  88. </select>
  89. <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
  90. delete from door
  91. where name = #{name,jdbcType=CHAR}
  92. </delete>
  93. <delete id="deleteByExample" parameterType="com.ceb.dgh.bo.DoorExample" >
  94. delete from door
  95. <if test="_parameter != null" >
  96. <include refid="Example_Where_Clause" />
  97. </if>
  98. </delete>
  99. <insert id="insert" parameterType="com.ceb.dgh.bo.Door" >
  100. insert into door (name, pass)
  101. values (#{name,jdbcType=CHAR}, #{pass,jdbcType=CHAR})
  102. </insert>
  103. <insert id="insertSelective" parameterType="com.ceb.dgh.bo.Door" >
  104. insert into door
  105. <trim prefix="(" suffix=")" suffixOverrides="," >
  106. <if test="name != null" >
  107. name,
  108. </if>
  109. <if test="pass != null" >
  110. pass,
  111. </if>
  112. </trim>
  113. <trim prefix="values (" suffix=")" suffixOverrides="," >
  114. <if test="name != null" >
  115. #{name,jdbcType=CHAR},
  116. </if>
  117. <if test="pass != null" >
  118. #{pass,jdbcType=CHAR},
  119. </if>
  120. </trim>
  121. </insert>
  122. <select id="countByExample" parameterType="com.ceb.dgh.bo.DoorExample" resultType="java.lang.Integer" >
  123. select count(*) from door
  124. <if test="_parameter != null" >
  125. <include refid="Example_Where_Clause" />
  126. </if>
  127. </select>
  128. <update id="updateByExampleSelective" parameterType="map" >
  129. update door
  130. <set >
  131. <if test="record.name != null" >
  132. name = #{record.name,jdbcType=CHAR},
  133. </if>
  134. <if test="record.pass != null" >
  135. pass = #{record.pass,jdbcType=CHAR},
  136. </if>
  137. </set>
  138. <if test="_parameter != null" >
  139. <include refid="Update_By_Example_Where_Clause" />
  140. </if>
  141. </update>
  142. <update id="updateByExample" parameterType="map" >
  143. update door
  144. set name = #{record.name,jdbcType=CHAR},
  145. pass = #{record.pass,jdbcType=CHAR}
  146. <if test="_parameter != null" >
  147. <include refid="Update_By_Example_Where_Clause" />
  148. </if>
  149. </update>
  150. <update id="updateByPrimaryKeySelective" parameterType="com.ceb.dgh.bo.Door" >
  151. update door
  152. <set >
  153. <if test="pass != null" >
  154. pass = #{pass,jdbcType=CHAR},
  155. </if>
  156. </set>
  157. where name = #{name,jdbcType=CHAR}
  158. </update>
  159. <update id="updateByPrimaryKey" parameterType="com.ceb.dgh.bo.Door" >
  160. update door
  161. set pass = #{pass,jdbcType=CHAR}
  162. where name = #{name,jdbcType=CHAR}
  163. </update>
  164. </mapper>

配置信息:

       web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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_3_0.xsd" id="WebApp_ID" version="3.0">
  3. <display-name>SSM_Test</display-name>
  4. <!-- 设置欢迎页面 -->
  5. <welcome-file-list>
  6. <welcome-file>/WEB-INF/index.jsp</welcome-file>
  7. </welcome-file-list>
  8. <!-- 配置SpringMvc的前端控制器DispatcherServlet -->
  9. <servlet>
  10. <servlet-name>springmvc</servlet-name>
  11. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  12. <!-- springmvc配置文件的位置 -->
  13. <init-param>
  14. <param-name>contextConfigLocation</param-name>
  15. <param-value>classpath:springconfig.xml</param-value>
  16. </init-param>
  17. </servlet>
  18. <!--设置在jsp页面表单提交的action="*.action"行为 -->
  19. <servlet-mapping>
  20. <servlet-name>springmvc</servlet-name>
  21. <url-pattern>*.action</url-pattern>
  22. <url-pattern>*.js</url-pattern>
  23. <url-pattern>*.html</url-pattern>
  24. <url-pattern>*.png</url-pattern>
  25. <url-pattern>*.css</url-pattern>
  26. <url-pattern>*.jpg</url-pattern>
  27. <url-pattern>*.jpeg</url-pattern>
  28. <url-pattern>*.txt</url-pattern>
  29. </servlet-mapping>
  30. <!-- post方式中文乱码过滤器 -->
  31. <filter>
  32. <filter-name>CharEncodingFilter</filter-name>
  33. <filter-class>
  34. org.springframework.web.filter.CharacterEncodingFilter
  35. </filter-class>
  36. <init-param>
  37. <param-name>encoding</param-name>
  38. <param-value>utf-8</param-value>
  39. </init-param>
  40. </filter>
  41. <filter-mapping>
  42. <filter-name>CharEncodingFilter</filter-name>
  43. <url-pattern>/*</url-pattern>
  44. </filter-mapping>
  45. </web-app>

springconfig.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"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xmlns:task="http://www.springframework.org/schema/task"
  8. xmlns:tx="http://www.springframework.org/schema/tx"
  9. xsi:schemaLocation="http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context.xsd
  13. http://www.springframework.org/schema/mvc
  14. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  15. http://www.springframework.org/schema/task
  16. http://www.springframework.org/schema/task/spring-task.xsd
  17. http://www.springframework.org/schema/tx
  18. http://www.springframework.org/schema/tx/spring-tx.xsd"
  19. default-lazy-init="true">
  20. <!-- 整合mybatis -->
  21. <!-- 加载db.properties包含数据库的连接信息 -->
  22. <context:property-placeholder location="classpath:db.properties"/>
  23. <!-- 配置数据源 -->
  24. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  25. destroy-method="close">
  26. <property name="driverClassName" value="${jdbc.driver}" />
  27. <property name="url" value="${jdbc.url}" />
  28. <property name="username" value="${jdbc.username}"></property>
  29. <property name="password" value="${jdbc.password}"></property>
  30. <!-- 连接池的最大数 -->
  31. <property name="maxActive" value="20"></property>
  32. <!-- 连接池最大空闲 -->
  33. <property name="maxIdle" value="20"></property>
  34. </bean>
  35. <!-- 配置SqlSessionFactory -->
  36. <bean id="sqlSessionFactory"
  37. class="org.mybatis.spring.SqlSessionFactoryBean">
  38. <property name="dataSource" ref="dataSource"></property>
  39. <!-- 指定要扫描的mapper.xml文件的位置 -->
  40. <property name="mapperLocations"
  41. value="classpath:com/ceb/dgh/mapper/*.xml"></property>
  42. </bean>
  43. <!-- mapper扫描,扫描mapper接口类 -->
  44. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  45. <property name="basePackage" value="com.ceb.dgh.mapper"></property>
  46. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
  47. </bean>
  48. <!-- 启动包的扫描功能,@controller等注解 -->
  49. <context:component-scan base-package="com.test"></context:component-scan>
  50. <!-- 模型视图的解析,请求逻辑视图名,添加前后缀 -->
  51. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  52. <property name="prefix" value="/WEB-INF/jsp/"></property>
  53. <!-- <property name="suffix" value=".jsp"></property> -->
  54. <property name="suffix" value=".jsp"></property>
  55. </bean>
  56. <!-- 事务管理 -->
  57. <bean id="transactionManager"
  58. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  59. <property name="dataSource" ref="dataSource"></property>
  60. </bean>
  61. <!-- 支持@Transactional注解 -->
  62. <tx:annotation-driven transaction-manager="transactionManager"/>
  63. <!-- 静态资源处理器 -->
  64. <mvc:resources location="/images/" mapping="/images/**" />
  65. <mvc:resources location="/js/" mapping="/js/**" />
  66. <mvc:resources mapping="/html/**" location="/html/" />
  67. <mvc:annotation-driven />
  68. </beans>

创建jsp页面:

index.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>首页</title>
  6. </head>
  7. <body>
  8. <form action="door/open.action" method="post">
  9. <div class="login">
  10. <dl>
  11. <dt class="blues">开门密码搜索</dt>
  12. <dd>
  13. <label for="name">门名:</label> <input type="text" name="name"
  14. class="inputh" value="${name}" id="name" />
  15. </dd>
  16. <dd class="buttom">
  17. <input name="" type="submit" value="走 你" />
  18. <div class="cl"></div>
  19. </dd>
  20. </dl>
  21. </div>
  22. </form>
  23. </body>
  24. </html>

result.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>响应页面</title>
  6. </head>
  7. <body>
  8. <form action="" method="post">
  9. <div class="login">
  10. <dl>
  11. <dt >开门密码</dt>
  12. <dd><a>门名: ${name}</a>
  13. </dd>
  14. <dd >
  15. <a>密码: ${pass}</a>
  16. </dd>
  17. </dl>
  18. </div>
  19. </form>
  20. </body>
  21. </html>

 

测试:

运行成功,输入框输入:月光宝盒,点击“走你”。

响应结果:

日志:

  1. [2019-03-16 01:06:18,001] [INFO] [org.springframework.web.servlet.DispatcherServlet.initServletBean:484] - FrameworkServlet 'springmvc': initialization started
  2. [2019-03-16 01:06:18,044] [INFO] [org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh:510] - Refreshing WebApplicationContext for namespace 'springmvc-servlet': startup date [Sat Mar 16 01:06:18 CST 2019]; root of context hierarchy
  3. [2019-03-16 01:06:18,083] [INFO] [org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:317] - Loading XML bean definitions from class path resource [springconfig.xml]
  4. [2019-03-16 01:06:18,520] [INFO] [org.springframework.context.support.PropertySourcesPlaceholderConfigurer.loadProperties:172] - Loading properties file from class path resource [db.properties]
  5. [2019-03-16 01:06:18,703] [INFO] [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandler:314] - Mapped URL path [/images/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
  6. [2019-03-16 01:06:18,990] [INFO] [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandler:314] - Mapped URL path [/js/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#1'
  7. [2019-03-16 01:06:18,994] [INFO] [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandler:314] - Mapped URL path [/html/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#2'
  8. [2019-03-16 01:06:19,029] [INFO] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.registerHandlerMethod:220] - Mapped "{[/door/open],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.test.controller.DoorController.login(com.ceb.dgh.bo.Door,org.springframework.ui.Model) throws java.net.UnknownHostException
  9. [2019-03-16 01:06:19,079] [INFO] [org.hibernate.validator.internal.util.Version.<clinit>:17] - HV000001: Hibernate Validator 5.2.2.Final
  10. [2019-03-16 01:06:19,501] [INFO] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache:518] - Looking for @ControllerAdvice: WebApplicationContext for namespace 'springmvc-servlet': startup date [Sat Mar 16 01:06:18 CST 2019]; root of context hierarchy
  11. [2019-03-16 01:06:19,626] [INFO] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache:518] - Looking for @ControllerAdvice: WebApplicationContext for namespace 'springmvc-servlet': startup date [Sat Mar 16 01:06:18 CST 2019]; root of context hierarchy
  12. [2019-03-16 01:06:19,768] [INFO] [org.springframework.web.servlet.DispatcherServlet.initServletBean:503] - FrameworkServlet 'springmvc': initialization completed in 1751 ms
  13. [2019-03-16 01:06:19,854] [INFO] [com.test.controller.DoorController.login:24] - 进入控制器door/open,参数:Door [name=月光宝盒, pass=null]
  14. [2019-03-16 01:06:20,091] [INFO] [com.test.controller.DoorController.DoOpen:23] - 进入业务层DoOpen方法
  15. Door:Door [name=月光宝盒, pass=菠萝菠萝蜜]

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/200169
推荐阅读
相关标签
  

闽ICP备14008679号