2019独角兽企业重金招聘Python工程师标准>>>

创建数据表user_info

create table 'user_info'(

user_id int(11) NOT NULL AUTO_INCREMENT,

user_name varchar(20) NOT NULL,

user_sex varchar(20) NOT NULL,

PRIMARY KEY (`user_id`)

写一个实体类UserInfo.java

package hover.chen.entity;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name="user_info")
public class UserInfo {@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="user_id")private int userId;@Column(name="user_name")private String userName;@Column(name="user_sex")private String userSex;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 getUserSex() {return userSex;}public void setUserSex(String userSex) {this.userSex = userSex;}}

写一个 IUserDAO.java 接口

package hover.chen.dao;import hover.chen.entity.UserInfo;public interface IUserDAO {public int addUser(UserInfo user);
}

UserDAOImpl 实现 IUserDAO.java 

package hover.chen.dao;import hover.chen.entity.UserInfo;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;//通过注解告诉spring这是DAO层
@Repository
public class UserDAOImpl implements IUserDAO{//告诉spring容器自动将hibernateTemplate注入到DAO层@Autowiredprivate HibernateTemplate hibernateTemplate;public int addUser(UserInfo user){String result = this.hibernateTemplate.save(user).toString();if(result != null){return Integer.parseInt(result);}return 0;}}

写一个 IUserService 接口

package hover.chen.service;import hover.chen.entity.UserInfo;public interface IUserService {public boolean addUser(UserInfo user);
}

UserServiceImpl 实现 IUserService

package hover.chen.service;import hover.chen.dao.IUserDAO;
import hover.chen.entity.UserInfo;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
//告诉spring这是service层
@Service
public class UserServiceImpl implements IUserService{//告诉spring容器自动将userDAO注入到Service层@Autowiredprivate IUserDAO userDAO;public boolean addUser(UserInfo user){return this.userDAO.addUser(user) > 0 ? true : false;}
}

写一个Controller

package hover.chen.controller;import hover.chen.entity.UserInfo;
import hover.chen.service.IUserService;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;//告诉spring这是controller
@Controller
//此类处理的是以/user路径的url请求
@RequestMapping
public class UserController {@Autowiredprivate IUserService userService;//处代表的是整个方法处理addUser的post请求@RequestMapping(value="/addUser",method=RequestMethod.POST)//处代表的是请求参数,其中value必须与页面元素的name值匹配,required=true则代表该参数必须要有//return 是指跳转至相应的路径,在这里是指跳转至views/success.jsp或者views/fail.jsppublic String addUserAction(@RequestParam(value="userName",required=true)String userName,@RequestParam(value="userSex",required=true)String userSex){UserInfo user = new UserInfo();user.setUserName(userName);user.setUserSex(userSex);return this.userService.addUser(user) == true ? "success" : "fail";}}

接下来是使视图层

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body><form action="addUser" method="post"><table align="center"><tr><td>用户名:</td><td><input type="text" name="userName" /></td></tr><tr><td>性别:</td><td><input type="radio" name="userSex" checked="checked" value="男" />男&nbsp;&nbsp;<input type="radio" name="userSex" value="女" /> 女</td></tr><tr><td colspan="2"><input type="submit" value="注册"></td></tr></table></form></body>
</html>

在 WEB-INF 下新建 views 文件夹,还记得上一篇在 mvc-context.xml 下配置

<!-- 代表返回视图进行解析:前缀为prefix 后缀为suffix --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean>

这里指定了视图的访问地址前缀。

在 views 下创建 success.jsp 和 fail.jsp

到这里所有都做完了,现在执行 clean   install    jetty:run

右键项目 run》》configure                 双击 Maven Build 新建 configure

点击Apply ,点击run

OK,就到这里。。。

如果遇到什么问题可以在评论里提出谢谢,我看到了如果会的话,会尽力回答!

转载于:https://my.oschina.net/swchenyuzhe/blog/357886

继续上一篇剩下的例子相关推荐

  1. 数据与广告系列十二:接上一篇,见习算法工程师教程

    作者|黄崇远(题图:ssyer.com,CCO协议)  公号,数据虫巢(ID: blogchong) " 看完了这篇,你就是个见习级算法工程师了.你觉得可能吗?" 接上一篇< ...

  2. 接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程

    接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程 举例如下:tasks.py文件如下: import signal from m ...

  3. 浅谈“==”、equals和hashcode,以及map的遍历方法(可用作上一篇k-means博文参考)

    前不久看到一个公司的面试题,问到"=="和"equals"的区别,些许上答不上来,于是木羊搜索并整理了一下.此外,木羊前面写了k-means算法实现的博文,其中 ...

  4. nginx ci index.php,CI在Nginx服务器上rewrite去掉index.php例子

    去掉index.php小编以前也有介绍过相关的文章了,在此小编再给各位介绍一篇CI在Nginx服务器上rewrite去掉index.php例子,希望下文可以帮助到大家. CI框架在nginx服务器上配 ...

  5. 分布式消息中间件中的一些概念(接上一篇的《什么是分布式消息中间件?》)...

    接上一篇的<什么是分布式消息中间件?>,这一篇来介绍一下消息中间件相关的一些概念和专业术语. Topic 主题,从逻辑上讲一个Topic就是一个Queue,即一个队列:从存储上讲,一个To ...

  6. mysql实现文章上一篇下一篇的sql语句

    转载:http://www.111cn.net/database/mysql/66709.htm 在mysql中查查询上一篇与下一篇只需要对数据进行按id排序之后,然后我们再进行asc或者desc最当 ...

  7. 织梦手机站下一篇变上一篇而且还出错Request Error!

    最新的织梦dedecms程序手机版下一篇变上一篇而且还出错Request Error!,这是因为官方写错了一个地方 打开 /include/arc.archives.class.php 找到 $mli ...

  8. PHP实现上一篇、下一篇

    //php实现上一篇.下一篇 获取当前浏览文章id$id = isset($_GET['id']) > 0 ? intval($_GET['id']) : "";下一篇文章$ ...

  9. php转盘抽奖源码yii2,yii2实现 上一篇,下一篇 功能的代码实例

    最近做了简答的文章详情页面,需要在页面底部加入上一篇,下一篇 按钮,分析了下,最基本需要有文章的标题和id(作为参数). 开始想的是当前的id加减1,但考虑到如果部分id丢失就不对了,于是分别查询比当 ...

最新文章

  1. 埃森哲咨询公司为何拥有世界上最多的区块链职位空缺
  2. HyperLink 鼠标经过时候显示全部文字
  3. rxjs pipe和map组合的一个实际例子的单步调试
  4. linux 机器格式化_为什么机器人应该为我们格式化代码
  5. CGAffineTransform
  6. 三星电子第二季芯片需求大增 但手机销售疲软
  7. java 二叉树的各种遍历
  8. 科大讯飞语音识别率从97%提升至98% 用AI赋能方言保护
  9. current_session_context_class
  10. java虚拟机是什么?
  11. openwrt下使用wget出现Failed to allocate uclient context
  12. 5G应用技术系列 - 从带宽和时延看5G和4G对应用区别
  13. 防爆和本安的概念理解
  14. nyoj 712 探 寻 宝 藏(双线dp 第六届河南省程序设计大赛)
  15. 平台商家面临“血本无归”风险,你真的了解电商二清吗
  16. 数字电路——流水灯(二)_往返流水灯
  17. 不得不吐槽的Android PopupWindow的几个痛点(实现带箭头的上下文菜单遇到的坑)...
  18. stm32打怪升级之再见闪烁灯
  19. python27是什么文件夹可以删除吗_python如何跳过错误继续运行,同时删除产生错误的文档...
  20. ORA-02396:超出最大空闲时间,请重新连接

热门文章

  1. 都是执行软件测试,差异点在那里
  2. MySQL 数据库入门
  3. JUnit5 测试套件示例
  4. Axure RP Extension for Chrome经常损坏
  5. 技巧 | 如何批量地将整型变量转换为因子变量
  6. python反向代理服务器_主机、服务器,代理服务器,反向代理服务器理解(自用)...
  7. 内大计算机学院研究生奖学金,通知 | 【研究生评奖评优】关于做好浙江大学2017-2018学年计算机学院研究生学年小结及评奖评优工作的通知...
  8. linux删除文件夹命令6,Linux下创建、删除文件和文件夹命令
  9. ip变更 mysql无法启动_MySQL 重装MySQL后, mysql服务无法启动
  10. 零基础web前端和python哪个好学一些?