需求:
从jsp页面添加一条记录到数据库,且显示到界面
分析:
- 创建jsp页面
- 创建EmailServlet>addEmail方法
- 设置请求编码
- 获取所有parameter的值
- 封装对象
- 调用addEmail方法
- 重定向到email/show下
- 创建EmailService接口>addEmail方法
- 调用addEmail(Email)方法
- 创建EmailDao接口>addEmail方法
- 创建sql语句
- 调用template的update方法
代码实现
jsp页面
<!doctype html>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>添加邮箱信息</title>
<!-- Bootstrap -->
<link rel="stylesheet" href="css/bootstrap.min.css" >
<style>
. {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<!--导航条-->
<div style="margin-bottom: -30px;">
<nav class="navbar navbar-inverse" >
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">行情来了管理系统</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li ><a href="#">会员管理管理 <span class="sr-only">(current)</span></a></li>
<li class="active"><a href="#">邮箱管理管理</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">
<%-- ${session_name}--%>
</a>
</li>
<li><a href="#"><span class="glyphicon glyphicon-log-in" aria-hidden="true"></span> 退出</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
</div>
<!--巨幕-->
<div class="jumbotron">
<div class="container">
<h2>添加邮箱信息表</h2>
</div>
</div>
<%--主体--%>
<div class="container">
<form class="form-horizontal" action="${pageContext.request.contextPath}/email/add" method="post" οnsubmit="return verify();">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">邮箱名称</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="email_name" id="inputEmail3" placeholder="请输入邮箱名称">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">邮箱账户</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="email_pass" id="inputPassword3" οnblur="try_email()" placeholder="请输入邮箱账户"><span name="span_email"></span>
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">邮箱类别</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="email_type" placeholder="请输入邮箱类别">
</div>
</div>
<%-- 下拉菜单--%>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">是否正常使用</label>
<div class="col-sm-10">
<div class="radio">
<label>
<input type="radio" name="is_use" id="optionsRadios1" value="yes" checked>Yes
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="is_use" id="optionsRadios2" value="no">No
</label>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-success">保存</button>
</div>
</div>
</form>
</div>
<script src="js/jquery-3.2.1.min.js" ></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="js/bootstrap.min.js"></script>
<script>
//校验
function verify(){
return try_email();
}
function try_email(){
//1.获取值email
var email = $("input[name='email']").val();
var s_email = $("span[name='span_email']");
console.log(email,s_email);
//2.使用get请求发送到servlet
$.get("/day39/emailServlet?email="+email,function(data){
//3.更新span标签内容
if(data==1){
s_email.text("邮箱已存在");
return false;
}else{
s_email.text("新邮箱可以使用");
return true;
}
});
}
</script>
</body>
</html>
EmailServlet
//添加邮箱
public void add(HttpServletRequest request,HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, IOException, ServletException {
//1.设置请求编码
request.getRequestDispatcher("utf-8");
response.setContentType("text/html;charset=utf-8");
//2.获取输入值
Map<String, String[]> map = request.getParameterMap();
//3.封装对象
Email email = new Email();
BeanUtils.populate(email,map);
for (String s : map.keySet()) {
String value = map.get(s)[0];
System.out.println("Eservlet:"+s+"="+value);
}
//4.调用service的addEmail方法
service.addEmail(email);
System.out.println("emailServlet:"+email);
//5.跳转到listEmail页面
response.sendRedirect(request.getContextPath()+"/email/show");
// request.getRequestDispatcher("/email/show").forward(request,response);
}
EmailService
@Override
public void addEmail(Email email) {
dao.addEmail(email);
}
EmailDao
@Override
public void addEmail(Email email) {
//1.定义sql
String sql = "insert into send_email (email_name,email_pass,email_type,is_use) values (?,?,?,?)";
//2.调用template的update方法
template.update(sql,email.getEmail_name(),email.getEmail_pass(),email.getEmail_type(),email.getIs_use());
}