zoukankan      html  css  js  c++  java
  • Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

              Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

                                             作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

      能看到这篇文章的小伙伴,详细你已经有一定的Java功能,并且对SSM组件已经有一定的了解啦。上次我分享过一篇关于“SSM之Spring和Mybatis整合案例”,这次我们需要在上次的基础之上添加前端的支持。本篇博客只是介绍他们的联合用法,并不涉及具体的业务逻辑。但是我们可以通过这个小案例,来嵌套我们实际生产环境中所需要的处理的业务逻辑哟!

    一.开发环境介绍

      整合SSM使用的是idea开发工具。在进行开发之前,我们需要准备数据库测试数据以及在Windows操作系统下安装WEB服务器(Tomcat)。

    1>.添加数据库数据

    1 create database yinzhengjie;
    2 
    3 use yinzhengjie;
    4 
    5 create table if not exists users(id int primary key auto_increment,name varchar(20) , age int) ;

    2>.安装Tomcat

       安装Tomcat的过程极为艰难,直接在网上下载一个安装即可,当然我这里的测试版本大家也可以下载,直接解压即可完成安装操作。我已经下载好了Tomcat绿色版(链接:https://pan.baidu.com/s/1_fTB5tX0JMUtErI-s0_Ofg 密码:bow5

    二.编写MVC框架代码并启动Tomcat服务器

    1>.创建模块,添加web project支持

    2>.引入Maven依赖

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>cn.org.yinzhengjie</groupId>
     8     <artifactId>MySSM</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10 
    11 
    12     <dependencies>
    13         <dependency>
    14             <groupId>junit</groupId>
    15             <artifactId>junit</artifactId>
    16             <version>4.11</version>
    17         </dependency>
    18         <dependency>
    19             <groupId>org.springframework</groupId>
    20             <artifactId>spring-context-support</artifactId>
    21             <version>4.3.5.RELEASE</version>
    22         </dependency>
    23         <dependency>
    24             <groupId>org.springframework</groupId>
    25             <artifactId>spring-jdbc</artifactId>
    26             <version>4.3.5.RELEASE</version>
    27         </dependency>
    28         <dependency>
    29             <groupId>org.mybatis</groupId>
    30             <artifactId>mybatis</artifactId>
    31             <version>3.2.1</version>
    32         </dependency>
    33         <dependency>
    34             <groupId>org.mybatis</groupId>
    35             <artifactId>mybatis-spring</artifactId>
    36             <version>1.3.0</version>
    37         </dependency>
    38         <dependency>
    39             <groupId>c3p0</groupId>
    40             <artifactId>c3p0</artifactId>
    41             <version>0.9.1.2</version>
    42         </dependency>
    43         <dependency>
    44             <groupId>mysql</groupId>
    45             <artifactId>mysql-connector-java</artifactId>
    46             <version>5.1.17</version>
    47         </dependency>
    48         <dependency>
    49             <groupId>org.aspectj</groupId>
    50             <artifactId>aspectjrt</artifactId>
    51             <version>1.6.1</version>
    52         </dependency>
    53         <dependency>
    54             <groupId>org.aspectj</groupId>
    55             <artifactId>aspectjweaver</artifactId>
    56             <version>1.8.10</version>
    57         </dependency>
    58         <dependency>
    59             <groupId>org.springframework</groupId>
    60             <artifactId>spring-webmvc</artifactId>
    61             <version>4.3.5.RELEASE</version>
    62         </dependency>
    63         <dependency>
    64             <groupId>javax.servlet</groupId>
    65             <artifactId>servlet-api</artifactId>
    66             <version>2.5</version>
    67         </dependency>
    68         <dependency>
    69             <groupId>jstl</groupId>
    70             <artifactId>jstl</artifactId>
    71             <version>1.2</version>
    72         </dependency>
    73     </dependencies>
    74 </project>
    pom.xml 文件内容

    3>.编写代码

      创建包结构如下:

      具体代码如下:

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.dao;
     7 
     8 import java.util.List;
     9 
    10 /**
    11  * Basedao,基本dao
    12  */
    13 public interface BaseDao<T> {
    14     public abstract void insert(T t) ;
    15     public abstract void update(T t) ;
    16     public abstract void delete(Integer id) ;
    17     public abstract T selectOne(Integer id) ;
    18     public abstract List<T> selectAll() ;
    19     public abstract List<T> selectPage(int offset, int length) ;
    20     public abstract int count() ;
    21 }
    BaseDao.java 文件内容
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.dao.impl;
     7 
     8 import cn.org.yinzhengjie.ssm.dao.BaseDao;
     9 import cn.org.yinzhengjie.ssm.domain.User;
    10 import org.apache.ibatis.session.RowBounds;
    11 import org.apache.ibatis.session.SqlSessionFactory;
    12 import org.mybatis.spring.support.SqlSessionDaoSupport;
    13 import org.springframework.stereotype.Repository;
    14 
    15 import javax.annotation.Resource;
    16 import java.util.List;
    17 
    18 @Repository("userDao")
    19 public class UserDaoImpl extends SqlSessionDaoSupport implements BaseDao<User> {
    20 
    21     public void insert(User user) {
    22         getSqlSession().insert("users.insert" , user) ;
    23     }
    24 
    25     public void update(User user) {
    26         getSqlSession().update("users.update", user);
    27     }
    28 
    29     public void delete(Integer id) {
    30         getSqlSession().delete("users.deleteOne", id);
    31     }
    32 
    33     public User selectOne(Integer id) {
    34         return getSqlSession().selectOne("users.selectOne", id);
    35     }
    36     public int count() {
    37         return getSqlSession().selectOne("users.selectCount");
    38     }
    39 
    40     public List<User> selectAll() {
    41         return getSqlSession().selectList("users.selectAll");
    42     }
    43     public List<User> selectPage(int offset ,int length) {
    44         return getSqlSession().selectList("users.selectPage" , new RowBounds(offset,length));
    45     }
    46 
    47     @Resource(name="sqlSessionFactory")
    48     public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
    49         super.setSqlSessionFactory(sqlSessionFactory);
    50     }
    51 }
    UserDaoImpl.java 文件内容
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.domain;
     7 
     8 public class User {
     9     private Integer id;
    10     private String name;
    11     private int age;
    12 
    13     public Integer getId() {
    14         return id;
    15     }
    16 
    17     public void setId(Integer id) {
    18         this.id = id;
    19     }
    20 
    21     public String getName() {
    22         return name;
    23     }
    24 
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28 
    29     public int getAge() {
    30         return age;
    31     }
    32 
    33     public void setAge(int age) {
    34         this.age = age;
    35     }
    36 }
    User.java 文件内容
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.service;
     7 
     8 import java.util.List;
     9 
    10 public interface UserService<T> {
    11     public abstract void insert(T t);
    12 
    13     public abstract void update(T t);
    14 
    15     public abstract void delete(Integer id);
    16 
    17     public abstract T selectOne(Integer id);
    18     public abstract int selectCount();
    19 
    20     public abstract List<T> selectAll();
    21     public abstract List<T> selectPage(int offset, int length);
    22 }
    UserService.java 文件内容
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.service.impl;
     7 
     8 import cn.org.yinzhengjie.ssm.dao.BaseDao;
     9 import cn.org.yinzhengjie.ssm.domain.User;
    10 import cn.org.yinzhengjie.ssm.service.UserService;
    11 import org.springframework.stereotype.Service;
    12 
    13 import javax.annotation.Resource;
    14 import java.util.List;
    15 
    16 /**
    17  * 用户服务实现类
    18  */
    19 @Service("userService")
    20 public class UserServiceImpl implements UserService<User> {
    21 
    22     @Resource(name="userDao")
    23     private BaseDao<User> userDao ;
    24 
    25     public void insert(User user) {
    26         userDao.insert(user);
    27     }
    28 
    29     public void update(User user) {
    30         userDao.update(user);
    31     }
    32 
    33     public void delete(Integer id) {
    34         userDao.delete(id);
    35     }
    36 
    37     public User selectOne(Integer id) {
    38         return userDao.selectOne(id);
    39     }
    40 
    41     public List<User> selectAll() {
    42         return userDao.selectAll();
    43     }
    44 
    45     public List<User> selectPage(int offset , int length) {
    46         return userDao.selectPage(offset , length);
    47     }
    48 
    49     public int selectCount() {
    50         return userDao.count();
    51     }
    52 }
    UserServiceImpl.java 文件内容
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.web.controller;
     7 
     8 import cn.org.yinzhengjie.ssm.domain.User;
     9 import cn.org.yinzhengjie.ssm.service.UserService;
    10 import org.springframework.stereotype.Controller;
    11 import org.springframework.web.bind.annotation.RequestMapping;
    12 
    13 import javax.annotation.Resource;
    14 
    15 @Controller
    16 @RequestMapping("/home")
    17 public class HomeController {
    18 
    19     //注入用户Service
    20     @Resource(name="userService")
    21     private UserService us ;
    22 
    23     @RequestMapping("/m1")
    24     public String m1(){
    25         System.out.println("m1");
    26         User u = new User();
    27         u.setName("yinzhengjie");
    28         u.setAge(18);
    29         us.insert(u);
    30         return "index" ;
    31     }
    32 }
    HomeController.java 文件内容
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 package cn.org.yinzhengjie.ssm.web.controller;
     7 
     8 import cn.org.yinzhengjie.ssm.domain.User;
     9 import cn.org.yinzhengjie.ssm.service.UserService;
    10 import org.springframework.stereotype.Controller;
    11 import org.springframework.ui.Model;
    12 import org.springframework.web.bind.annotation.RequestMapping;
    13 import org.springframework.web.bind.annotation.RequestMethod;
    14 import org.springframework.web.bind.annotation.RequestParam;
    15 
    16 import javax.annotation.Resource;
    17 import java.util.List;
    18 
    19 @Controller
    20 @RequestMapping("/user")
    21 public class UserController {
    22 
    23     @Resource(name="userService")
    24     private UserService<User> us ;
    25 
    26 
    27     public String findAll(Model m){
    28         List<User> list = us.selectAll();
    29         m.addAttribute("list" , list) ;
    30         return "user/list" ;
    31     }
    32 
    33     @RequestMapping("/list")
    34     public String page(Model m , @RequestParam(value = "pno" , defaultValue = "1") int pno){
    35         //每页显示5条记录
    36         int records = 5 ;
    37 
    38         //总页数
    39         int pages = 1 ;
    40 
    41         //查询总记录数
    42         int count = us.selectCount() ;
    43 
    44         if(count % records == 0){
    45             pages = count / records ;
    46         }
    47         else{
    48             pages = count / records + 1;
    49         }
    50 
    51         List<User> list = us.selectPage( (pno-1) * records, records) ;
    52 
    53         m.addAttribute("list" ,list) ;
    54         m.addAttribute("pages" , pages) ;
    55         return "user/list" ;
    56     }
    57 
    58     @RequestMapping("/delete")
    59     public String delete(Integer uid) {
    60         us.delete(uid);
    61         return "redirect:/user/list";
    62     }
    63 
    64     @RequestMapping("/toadd")
    65     public String toadd(){
    66         return "user/reg" ;
    67     }
    68 
    69     @RequestMapping(value = "/doadd" ,method = RequestMethod.POST)
    70     public String doAdd(User user){
    71         us.insert(user);
    72         return "redirect:/user/list" ;
    73     }
    74 
    75     @RequestMapping(value = "/modify" ,method = RequestMethod.GET)
    76     public String modify(Model m ,Integer uid){
    77         User u = us.selectOne(uid) ;
    78         m.addAttribute("user" , u) ;
    79         return "user/edit" ;
    80     }
    81 
    82     @RequestMapping(value = "/update" ,method = RequestMethod.POST)
    83     public String update(User u){
    84         us.update(u);
    85         return "redirect:/user/list" ;
    86     }
    87 }
    UserController.java 文件内容

    4>.编辑Spring和Mybatis配置文件

       文件存放路径如下:

      具体代码如下:

     1 <?xml version="1.0"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xmlns:aop="http://www.springframework.org/schema/aop"
     5        xmlns:context="http://www.springframework.org/schema/context"
     6        xmlns:tx="http://www.springframework.org/schema/tx"
     7        xsi:schemaLocation="http://www.springframework.org/schema/beans
     8                         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
     9                         http://www.springframework.org/schema/aop
    10                         http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    11                         http://www.springframework.org/schema/context
    12                         http://www.springframework.org/schema/context/spring-context-4.3.xsd
    13                         http://www.springframework.org/schema/tx
    14                         http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    15     <context:component-scan base-package="cn.org.yinzhengjie.ssm.service,cn.org.yinzhengjie.ssm.dao" />
    16     <!-- 数据源 -->
    17     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    18         <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    19         <property name="jdbcUrl" value="jdbc:mysql://localhost:5200/yinzhengjie"/>
    20         <property name="user" value="root"/>
    21         <property name="password" value="yinzhengjie"/>
    22         <property name="maxPoolSize" value="10"/>
    23         <property name="minPoolSize" value="2"/>
    24         <property name="initialPoolSize" value="3"/>
    25         <property name="acquireIncrement" value="2"/>
    26     </bean>
    27 
    28     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    29         <property name="dataSource" ref="dataSource"/>
    30         <property name="configLocation" value="classpath:mybatis-config.xml"/>
    31     </bean>
    32 
    33     <!-- 事务管理器,在servie层面上实现事务管理的。 -->
    34     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    35         <property name="dataSource" ref="dataSource" />
    36     </bean>
    37 
    38     <!-- 事务通知 -->
    39     <tx:advice id="txAdvicd" transaction-manager="txManager">
    40         <tx:attributes>
    41             <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" />
    42             <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" />
    43             <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" />
    44             <tx:method name="select*" propagation="REQUIRED" isolation="DEFAULT" read-only="true" />
    45             <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT" />
    46         </tx:attributes>
    47     </tx:advice>
    48 
    49     <aop:config>
    50         <aop:advisor pointcut="execution(* *..*Service.*(..))" advice-ref="txAdvicd" />
    51     </aop:config>
    52 </beans>
    beans.xml 文件内容
     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <typeAliases>
     7         <typeAlias type="cn.org.yinzhengjie.ssm.domain.User"                alias="_User" />
     8     </typeAliases>
     9     <mappers>
    10         <mapper resource="UserMapper.xml"/>
    11     </mappers>
    12 </configuration>
    mybatis-config.xml 文件内容
     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     4 <!-- 定义名字空间 -->
     5 <mapper namespace="users">
     6     <insert id="insert">
     7         insert into users(name, age) values(#{name}, #{age}) ;
     8     </insert>
     9 
    10     <update id="update">
    11         update users set name = #{name} , age = #{age} where id = #{id}
    12     </update>
    13 
    14     <delete id="deleteOne">
    15         delete from users where id = #{id}
    16     </delete>
    17 
    18     <select id="selectOne" resultType="_User">
    19         select * from users where id = #{id}
    20     </select>
    21 
    22     <select id="selectAll" resultType="_User">
    23         select * from users
    24     </select>
    25     <select id="selectPage" resultType="_User">
    26         select * from users limit #{offset} , #{limit}
    27     </select>
    28     <select id="selectCount" resultType="int">
    29         select count(*) from users
    30     </select>
    31 
    32 </mapper>
    UserMapper.xml 文件内容

    5>.配置web文件

      配置目录如下:

     

      具体文件内容如下:

    【web/user目录】

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     3 <html>
     4 <head>
     5     <title>UserList</title>
     6 </head>
     7 <body>
     8 </body>
     9 <form action='<c:url value="/user/update"/>' method="post">
    10     <input type="hidden" name="id" value='<c:out value="${user.id}"/>'>
    11     username : <input type="text" name="name" value='<c:out value="${user.name}"/>'><br>
    12     age : <input type="text" name="age" value='<c:out value="${user.age}"/>'><br>
    13     <input type="submit" value="提交">
    14 </form>
    15 </html>
    edit.jsp 文件内容
     1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     3 <html>
     4 <head>
     5     <title>UserList</title>
     6 </head>
     7 <body>
     8 <a href='<c:url value="/user/toadd" />'>添加新用户</a><br>
     9 <table border="1px" cellpadding="0px" cellspacing="0px"
    10        style="border-collapse: collapse">
    11     <tr>
    12         <td>id</td>
    13         <td>name</td>
    14         <td>age</td>
    15         <td>修改</td>
    16         <td>删除</td>
    17     </tr>
    18     <c:forEach items="${list}" var="u">
    19         <tr>
    20             <td><c:out value="${u.id}" /></td>
    21             <td><c:out value="${u.name}" /></td>
    22             <td><c:out value="${u.age}" /></td>
    23             <td><a href='<c:url value="/user/modify?uid=${u.id}" />'>修改</a></td>
    24             <td><a href='<c:url value="/user/delete?uid=${u.id}" />'>删除</a></td>
    25         </tr>
    26     </c:forEach>
    27     <tr>
    28         <td colspan="5" style="text-align: right">
    29             <c:forEach begin="1" end="${pages}" var="i">
    30                 <c:if test="${i == param.pno}">
    31                     [<c:out value="${i}"/>]&nbsp;&nbsp;
    32                 </c:if>
    33                 <c:if test="${i != param.pno}">
    34                     <a href='<c:url value="/user/list?pno=${i}" />'><c:out  value="${i}"/></a>&nbsp;&nbsp;
    35                 </c:if>
    36             </c:forEach>
    37         </td>
    38     </tr>
    39 
    40 </table>
    41 </body>
    42 </html>
    list.jsp 文件内容
     1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     3 <html>
     4 <head>
     5     <title>UserList</title>
     6 </head>
     7 <body>
     8 </body>
     9 <form action='<c:url value="/user/doadd"/>' method="post">
    10     username : <input type="text" name="name"><br>
    11     age : <input type="text" name="age"><br>
    12     <input type="submit" value="提交">
    13 </form>
    14 </html>
    reg.jsp 文件内容

    【web/WEB-INF目录】

     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:mvc="http://www.springframework.org/schema/mvc"
     5        xmlns:context="http://www.springframework.org/schema/context"
     6        xsi:schemaLocation="http://www.springframework.org/schema/beans
     7                         http://www.springframework.org/schema/beans/spring-beans.xsd
     8                         http://www.springframework.org/schema/mvc
     9                         http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
    10                         http://www.springframework.org/schema/context
    11                         http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    12     <!-- 配置扫描路径 -->
    13     <context:component-scan base-package="cn.org.yinzhengjie.ssm.web.controller"/>
    14     <!-- 使用注解驱动 -->
    15     <mvc:annotation-driven/>
    16     <!-- 内部资源视图解析器 -->
    17     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    18         <property name="prefix" value="/"/>
    19         <property name="suffix" value=".jsp"/>
    20     </bean>
    21 </beans>
    dispatcher-servlet.xml 文件内容
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     5          version="3.1">
     6 
     7     <!-- 通过上下文参数指定配置文件的位置 -->
     8     <context-param>
     9         <param-name>contextConfigLocation</param-name>
    10         <param-value>classpath:beans.xml</param-value>
    11     </context-param>
    12 
    13     <!-- 上下文载入器监听器,确保web服务器启动时,加载spring的配置到容器中 -->
    14     <listener>
    15         <listener-class>org.springframework.web.context.ContextLoaderListener
    16         </listener-class>
    17     </listener>
    18 
    19     <filter>
    20         <filter-name>characterEncodingFilter</filter-name>
    21         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    22         <init-param>
    23             <param-name>encoding</param-name>
    24             <param-value>UTF-8</param-value>
    25         </init-param>
    26         <init-param>
    27             <param-name>forceEncoding</param-name>
    28             <param-value>true</param-value>
    29         </init-param>
    30     </filter>
    31     <filter-mapping>
    32         <filter-name>characterEncodingFilter</filter-name>
    33         <url-pattern>/*</url-pattern>
    34     </filter-mapping>
    35 
    36     <servlet>
    37         <servlet-name>dispatcher</servlet-name>
    38         <servlet-class>org.springframework.web.servlet.DispatcherServlet
    39         </servlet-class>
    40     </servlet>
    41     <servlet-mapping>
    42         <servlet-name>dispatcher</servlet-name>
    43         <url-pattern>/</url-pattern>
    44     </servlet-mapping>
    45 </web-app>
    web.xml 文件内容

    【web根目录】

      1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      2 <!DOCTYPE html>       <!--Doctype告诉浏览器使用什么样的html或xhtml规范来解析html文档。html这种模式兼容浏览器是最好的-->
      3 <html lang="en">
      4 <head  name="尹正杰" age="25">  <!--标签的开头,其里面的内容(name="尹正杰")是标签的属性,其属性可以定义多个。-->
      5   <meta charset="UTF-8"/>     <!--指定页面编码,我们称这种标签类型为自闭和标签,因为我们需要在标签的结尾写上“/”,为了方便我们识别标签类型。-->
      6   <meta http-equiv="refresh" content="5; Url=http://www.cnblogs.com/yinzhengjie/"> <!--这是做了一个界面的跳转,表示30s不运行的话就跳转到指定的URL-->
      7   <title>尹正杰的个人主页</title> <!--定义头部(标签)的标题-->
      8   <meta name="keywords" content="开发者,博客园,开发者,程序猿,程序媛,极客,编程,代码,开源,IT网站,Developer,Programmer,Coder,Geek,技术社区" /> <!--“content”定义关键字,其作用就是让浏览器通过搜索关键字时,会匹配该网站,这就是说如果你没有单独给百度钱的话,这些关键字就尤为重要啦!-->
      9   <meta name="description" content="博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。" />  <!--定义描述字符,其作用就告诉客户你的这个网站是干嘛使用的。-->
     10   <link rel="shortcut icon" href="https://baike.baidu.com/pic/%E9%82%93%E7%B4%AB%E6%A3%8B/6798196/0/d1a20cf431adcbef011db9bba6af2edda3cc9f66?fr=lemma&ct=single#aid=0&pic=d1a20cf431adcbef011db9bba6af2edda3cc9f66" type="image/x-icon" /> <!--定义头部图标-->
     11   <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <!--这个是IE的浏览器生效的规则,如果你用的是谷歌,360等浏览器的话,这行规则不生效,如果你用的是IE浏览器的话,表示用IE最新的引擎去渲染HTML-->
     12 </head> <!--标签的结尾,结合该标签的开头,这种标签类型我们称之为主动闭合标签。-->
     13 <body>
     14 <h1>尹正杰</h1><!--定义文件的内容,其中“h1”标签中-->
     15 <h2>尹正杰</h2>
     16 <h3>尹正杰</h3>
     17 <h4>尹正杰</h4>
     18 <h5>尹正杰</h5>
     19 <h6>尹正杰</h6>
     20 <h1>You are a good boy!</h1>
     21 <div style=" 4000px">  <!--是其缩进代码的父级标签,给其定义宽度属性是200像素大小-->
     22   <h1>尹正杰</h1><!--块级标签:也叫父级标签,即自己单独占了一行空间,或者说是占它父级标签的100%。作用:定义文件的内容-->
     23   <h1>You are a good boy!</h1>
     24 </div>  <!--div的标签的结尾-->
     25 <p>素胚勾勒出青花笔锋浓转淡<br/>瓶身描绘的牡丹一如你初妆<br/>冉冉檀香透过窗心事我了然<br/>宣纸上走笔至此搁一半<br/>釉色渲染仕女图韵味被私藏<br/>而你嫣然的一笑如含苞待放</p> <!--其中<br/>表示换行符的意思,<p></p>表示一个段落的意思。-->
     26 <a>yinzhengjie</a> <!--内联标签,以a开头的标签都是内联标签,这些标签的内容时连接在一起的。:-->
     27 <a>2017</a>
     28 <a href="http://www.cnblogs.com/yinzhengjie/" target="_blank">尹正杰博客</a>  <!--a标签特有的性能,重定向,通过href属性定义需要跳转的网站,通过target="_blank"表示新打开一个标签页并打开新的URL地址-->
     29 
     30 <a href="#Y1">Golang第一章</a>  <!--a标签特有的性能,做锚,找ID为"Y1"的标签并跳转过去-->
     31 <a href="#Y2">Golang第二章</a>  <!--找ID为"Y2"的标签-->
     32 <a href="#Y3">Golang第三章</a>  <!--找ID为"Y3"的标签-->
     33 
     34 
     35 
     36 <div id="Y1" style="height:700px;background-color:antiquewhite">  <!--用id来定义标签为"Y1"(一般要具有唯一性,即尽量不要让标签的id的值相同),用style来定义高度为700像素,颜色用background-color来定义。-->
     37   Golang进阶之路Day1<br/>
     38   Go语言官方自称,之所以开发Go 语言,是因为“近10年来开发程序之难让我们有点沮丧”。 这一定位暗示了Go语言希望取代C和Java的地位,成为最流行的通用开发语言。博客地址:http://www.cnblogs.com/yinzhengjie/p/6482675.html
     39 </div>
     40 
     41 <div id="Y2" style="height:700px;background-color:rebeccapurple;">
     42   <br/>Golang进阶之路Day2<br/>
     43   前者大家应该都很熟悉,因为我在上一篇(http://www.cnblogs.com/yinzhengjie/p/6482675.html)关于GO的博客中用"go build"命令编译不同的版本,但是在这里我们还是要演示一下go build的花式用法。博客地址:http://www.cnblogs.com/yinzhengjie/p/7000272.html
     44 </div>
     45 
     46 <div id="Y3" style="height:700px;background-color:brown;">
     47   Golang进阶之路Day3<br/>
     48   当然我这里只是介绍了Golang的冰山一角,对Golang感兴趣的小伙伴,可以看一下Golang官网的文档说明。毕竟官方才是最权威的,给出国内地址:https://golang.org/pkg/!博客地址:http://www.cnblogs.com/yinzhengjie/p/7043430.html
     49 </div>
     50 
     51 <!--功能最少的标签,最纯洁的易于加工的标签,即他们没有“h1”和"a"标签那么多的属性。-->
     52 <div>我是块标签</div>
     53 <span>我是内联标签</span>    
     54 
     55 <!--列表-->
     56 <ul>    <!--打印字符穿前面带个小黑点-->
     57   <li>菜单一</li>
     58   <li>菜单二</li>
     59   <li>菜单三</li>
     60 </ul>
     61 
     62 <ol>  <!--打印字符串前面有数字标识-->
     63   <li>第一章</li>
     64   <li>第二章</li>
     65   <li>第三章</li>
     66 </ol>
     67 
     68 <ol>
     69   <dd>北京</dd>  <!--自带缩进,可以用于写新闻的标题-->
     70   <dt>朝阳区</dt>
     71   <dt>亦庄经济开发区</dt>
     72   <dt>丰台区</dt>
     73   <dt>海淀区</dt>
     74   <dd>河北</dd>
     75   <dt>石家庄</dt>
     76   <dt>保定</dt>
     77   <dd>陕西</dd>
     78   <dt>西安</dt>
     79   <dt>安康</dt>
     80 </ol>
     81 
     82 
     83 <!--表格-->
     84 <table border="1">   <!--定义一个表格,其属性是border="1",表示加边框的意思。-->
     85   <thead>    <!--定义表头信息-->
     86   <tr>   <!--'tr'表示定义一行的数据,里面的内容由子标签<th></th>实现-->
     87     <th>姓名</th>    <!--'th'定义同一行每一列的内容,也就是说只要带有这个标签的且在其父标签"tr"标签中就是写的同一行内容。-->
     88     <th>年龄</th>
     89     <td>性别</td>
     90   </tr>
     91   </thead>
     92   <tbody> <!--定义表格的内容-->
     93   <tr>  <!--'tr'表示每一行的数据,其定义的是行的操作。-->
     94     <td>尹正杰</td> <!--td用来定义当前行的每一列的内容,与thead中的'th'用法相同。只不过'th’有加粗效果!-->
     95     <td>25</td>
     96     <td>boy</td>
     97   </tr>
     98   <tr>  <!--'tr'表示每一行的数据-->
     99     <td>尹正杰</td> <!--‘<td></td>’标签定义的是列的操作-->
    100     <td colspan="2">26</td>     <!--注意,'td'标签的colspan属性表示向右占锯的空间,我们给的值是“2”,就表示会从当前列往后在占一个列,共计当前行的两列空间!-->
    101   </tr>
    102   <tr>  <!--'tr'表示每一行的数据-->
    103     <td>yinzhengjie</td> <!--‘<td></td>’标签定义的是列的操作-->
    104     <td rowspan="2">26</td>     <!--注意,'td'标签的rowspan属性表示向下占据的空间,我们这里给的是还是“2”,即从当前行的当前列,向下扩充空一列内容。-->
    105   </tr>
    106   <tr>  <!--'tr'表示每一行的数据-->
    107     <td>yinzhengjie</td> <!--‘<td></td>’标签定义的是列的操作-->
    108     <td >26</td>     <!--表示这个'td'标签占两列的空间-->
    109   </tr>
    110   </tbody>
    111 </table>
    112 </body>
    113 </html>
    index.jsp 文件内容
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>myhtml.html</title>
     6 </head>
     7 <body>
     8     <table border="1px" cellpadding="0px" cellspacing="0px" style="border-collapse: collapse">
     9         <tr>
    10             <td>id</td>
    11             <td>name</td>
    12             <td>age</td>
    13         </tr>
    14         <tr>
    15             <td>1</td>
    16             <td>tom</td>
    17             <td>12</td>
    18         </tr>
    19         <tr>
    20             <td>2</td>
    21             <td>tomas</td>
    22             <td>13</td>
    23         </tr>
    24     </table>
    25     <h1>h1标题</h1>
    26     <h2>h2标题</h2>
    27     <h3>h3标题</h3>
    28     <a href="http://www.baidu.com">百度</a><br>
    29     <img src="Koala.gif" width="200px" height="100px">
    30     <input action="">
    31         username : <input type="text" name="user_name"><br>
    32         password : <input type="password" name="user_pass"><br>
    33         confirm : <input type="password" name="user_confirm"><br>
    34         nickname : <input type="text" name="user_nickname"><br>
    35         sex :   <input type="radio" name="user_sex" value="1"></input>
    36                 <input type="radio" name="user_sex" value="0"></input><br>
    37         hobby : <input type="checkbox" name="user_hobby" value="0">足球</input>
    38     <input type="checkbox" name="user_hobby" value="1">蓝球</input>
    39     <input type="checkbox" name="user_hobby" value="2">排球</input><br>
    40     民族 : <select multiple="multiple">
    41         <option value="0">汉族</option>
    42         <option value="1">满族</option>
    43         <option value="2">回族</option>
    44     </select>
    45     <br>
    46     <textarea></textarea>
    47     </form>
    48 </body>
    49 </html>
    myhtml.html 文件内容(主要是测试HTML标签的代码文件)

    koala.gif是一张考拉的图片,这个大家可以随意放一张照片上去,如下:

    6>.添加Tomcat服务端插件

    7>.修改Tomcat的服务器名称

    8>.添加开发环境(选中项目名称)

     

    9>.配置Tomcat的相关参数(配置完毕之后需要点击ok确认哟)

    10>.给项目添加依赖库

      点击OK确认配置成功,如下图:

    11>.启动Tomcat服务器

      启动成功之后,会自动打开我们设置的浏览器,如下图:

    三.通过Web界面实现增删改查

      由于我的首页会在5秒之后进行自动跳转,因此咱们的手速得快,我们需要切换到指定的路径中去“/user/list”。

    1>.查看数据库信息

     

    2>.通过web界面网数据库里插入数据

      添加新用户

      添加测试用户:

       添加数据成功:

    3>.删除数据(我们用上面的方法多添加一些数据信息)

     

    4>.修改数据

     

      将修改的数据进行提交:

      查看数据是否修改成功:

  • 相关阅读:
    数组作业:例题5.1.一个10个元素一维数组的赋值与遍历
    java子父类初始化顺序 (1)父类静态代码块(2)父类静态变量初始化(3)子类静态代码块(4)子类静态变量初始化(5)main(6)有对象开辟空间都为0(7)父类显示初始化(8)父类构造(9)子类显示初始化(10)子类构造
    如果实现接口的类只使用一次用处不大换为如下简便写法——匿名内部类
    1、实现接口的抽象类——适配器;2、代理公司的方法——功能更强大的包装类;3、接口的使用——工厂模式(高内聚低耦合)
    内部类的作用?1、抽象类中包含一个内部接口如何实现与调用 ;2、接口中包含一个内部抽象类如何调用
    接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。
    接口的定义——默认加public abstract默认全局常量;与继承不同,子类可以同时实现多个接口;抽象类实现接口;接口继承接口
    EBCDIC to ASCII
    how to pass variable from shell script to sqlplus
    关于Insufficient space for shared memory file解决办法
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/9300054.html
Copyright © 2011-2022 走看看