1.通用Servlet的编写
数据库增删改查 需要5个Servlet
通过 Servlet
目的:减少Servler的数量
**原理:**
从客户端向服务端发起请求,每次都要传递额外的键值对的数据method=””,
服务端获取到method对应的内容之后,通过判断不同的内容调用不同的功能
从客户端向服务端发起请求,调用功能方式:
1_通过表单向服务端发起请求
2_通过链接向服务端发起请求
3_Ajax向服务端发起请求
1. 版本1
1. 项目下建立index.html
2.在项目下建立cn.itcast.servlet___>ServletDemo
2. 版本2
方式一如果方法比较多会出现很多的If…else语句 。简直是太多的废话
方式二根据反射的原理,来执行方法。减少代码的冗余。简单的说抽取一个工具类BaseServlet。见下图
2. 搭建环境
-
创建DynamicWebProject(store_v5)
-
创建各个包结构
cn.itcast.store.web.servlet
cn.itcast.store.web.fitler
cn.itcast.store.web.base
Cn.itcast.store.service
cn.itcast.store.service.serviceImp
Cn.itcast.store.dao
cn.itcast.store.dao.daoImp
cn.itcast.store.domain
Cn.itcast.store.utils -
导入JAR包
-
导入工具类
-
导入配置文件
C3P0配置文件,修改参数(dbname,user,pass) JDBCUtils:设置main方法,打印方法getConnection()返回值 -
导入编码过滤器(EncodingFilter)
对过滤器中的request上的3个方法进行增强
req.getParameterValues(); req.getParameterMap(); req.getParameter();
手动对过滤器进行配置 -
导入BaseServlet ,不需要配置
-
导入JSP页面
-
创建了用户模块相关程序
UserSerlvet UserService UserServiceImp UserDao UserDaoImp User
3. 实现用户注册
1. 开发约定
为了项目管理方便,不会从客户端直接发起请求到JSP页面.
先请求到Servlet,在由Servlet转发到JSP页面.
2. 页面路径跳转
1_ /jsp/index.jsp 修改连接
```powershell
<a href="${pageContext.request.contextPath}/UserServlet?method=registUI">注册</a>
```
2_UserServlet__>registUI
return “/jsp/regist.jsp”;
3. 注册功能原理分析
4. 步骤实现
- 1 _准备工作 /jsp/regist.jsp
设置表单各种属性 action method
- 2_UserServlet__>userRegist
接收表单参数
调用业务层注册功能
注册成功,向用户邮箱发送信息,跳转到提示页面
注册失败,跳转到提示页面
- 3_依次实现service,dao
- 4_ /jsp/info.jsp获取提示信息
4 电子邮箱
- 概念
*_邮件服务器:
公司服务器上安装软件,管理各个邮箱账户中的邮件 接收/发送
*_电子邮箱:
各个账户在服务器上开辟一段空间
*_邮件协议: 发送SMTP 接收:pop3/pop/imap
作用:约定了邮件在网络中传输格式
*_搭建邮件服务器
获取到eyoumailserversetup.exe ,安装即可
- 邮件协议
-
SMTP 协议-发邮件协议
全称为 Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与 SMTP服务器之间、以及两台 SMTP 服务器之间的通讯规则。
端口号:25. -
POP3 协议-收邮件协议
全称为 Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3 服务器的通讯规则。
端口号:110.
- 发送邮件流程
- 使用JavaMail发送邮件
- 导入 jar 包:
- 编写实现
/* 邮件发送过程
* * smtp 协议:邮件发送协议,端口号:25
* * pop3 协议:邮件接收协议,端口号:110
* 使用java 程序发送邮件,采用smtp 协议。java 提供javamail 用于发送邮件的,代码固定
* 126 --> itcast@126.com //账号不存在,需要自己注册
* 163 --> itheima@163.com //账号不存在,需要自己注册
*/
public static void main(String[] args) throws Exception {
//0.1 服务器的设置
Properties props = new Properties();
props.setProperty("mail.host", "smtp.126.com");
北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090
props.setProperty("mail.smtp.auth", "true");
//0.2 账号和密码
Authenticator authenticator = new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//126 账号和密码(模拟账号,需要自己注册)
return new PasswordAuthentication("itcast","123456");
}
};
//1 与126 服务器建立连接:Session
Session session = Session.getDefaultInstance(props, authenticator);
//2 编写邮件:Message
Message message = new MimeMessage(session);
//2.1 发件人(模拟账号)
message.setFrom(new InternetAddress("itcast@126.com"));
//2.2 收件人, to:收件人, cc :抄送,bcc:暗送(密送)。(模拟账号)
message.setRecipient(RecipientType.TO, new
InternetAddress("itheima@163.com"));
//2.3 主题
message.setSubject("这是我们得第一份邮件");
//2.4 内容
message.setContent("哈哈,您到我的商城注册了。", "text/html;charset=UTF-8");
//3 将消息进行发送:Transport
Transport.send(message);
}
- 搭建本地环境
- 安装邮件服务器
- 安装客户端软件
- 参考
-
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class TestEmail {
public static void main(String[] args) throws Exception {
// 0.1 服务器的设置
Properties props = new Properties();
//props.setProperty("mail.host", "smtp.126.com");
//props.setProperty("mail.smtp.auth", "true");
// 0.2 账号和密码
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 126账号和密码(模拟账号,需要自己注册)
//return new PasswordAuthentication("itcast", "123456");
return new PasswordAuthentication("admin@store.com", "admin");
}
};
// 1 与126服务器建立连接:Session
Session session = Session.getDefaultInstance(props, authenticator);
// 2 编写邮件:Message
Message message = new MimeMessage(session);
// 2.1 发件人(模拟账号)
//message.setFrom(new InternetAddress("itcast@126.com"));
message.setFrom(new InternetAddress("admin@store.com"));
// 2.2 收件人 , to:收件人 , cc :抄送,bcc:暗送(密送)。(模拟账号)
message.setRecipient(RecipientType.TO, new InternetAddress("aaa@store.com"));
// 2.3 主题
message.setSubject("这是我们得第一份邮件");
// 2.4 内容
message.setContent("哈哈,您到我的商城注册了。", "text/html;charset=UTF-8");
// 3 将消息进行发送:Transport
Transport.send(message);
}
}