前言:到现在我一共发表了11篇与Web相关的文章,那么今天这一篇在讲三层架构项目集成的同时,我会把之前的在简单的讲一下。
什么是jsp
-是一种文件格式
- 写java,html,css,js
- jsp本质上是java的额外封装,解析过程中优先解析java
">
- .jsp -> .java -> .class -> jvm执行
安装tomcat
- 默认端口 8080
- 如果出现了端口异常,修改端口
jsp的跳转方式
- 转发 forward
- 可以携带数据(请求中的)
- 地址栏不变
- 是服务器行为
- 重定向 redirect
- 不可以携带数据(请求中的)
- 地址栏变
- 是客户端行为
基本指令
- <%=输入内容 %>
- <% java脚本 %>
- <%@page 页面指令 %>
- <%@include 包含指令 %>
表单提交方式
- get 通过地址栏带参,参数有长度限制
- post 不通过地址栏带参,参数没有长度限制
> 文件上传的时候 必须是post,必须是多段式表单
jdbc
- jdbc:oracle:thin:@localhost:1521:orcl
【都可以设定存在时间:session-30分钟,cookie-浏览器关闭】
session 服务端存储
cookie 客户端存储
应用场景:
* 浏览记录 cookie
* 鉴权 session
* 存数据库里面,缓冲数据库
sql语句怎么写?规律
【规律】 page当前页数 rows显示条数
page:1 rows:10 1~10
page:2 rows:10 11~20
page:3 rows:10 21~30
begin(开始位置): (page-1)*rows+1
end(结束位置): page*rows
【sql】
select * from (
select a.*,rownum myr from stu a
)b where myr between begin and end;
文件上传
- 文件上传的主要操作
* 1.将文件保存到电脑路径中
* 2.将保存的电脑路径存到数据库
* 3.绑定tomcat映射,为你保存文件的目录加上一个访问路径
- 如果诞生一个不重复的名字
* 使用UUID UUID.randomUUID()
富文本编辑器 (把你输入的语句变成了html来保存)
没有学习三层架构时:
* jsp 将页面显示出来
* dao 去数据库取数据,处理数据
dao层:1.拿数据 2.负责处理数据
【系统的耦合性:各个模块连接的紧密度】
【三层架构】
* 各司其职
* 高内聚,低耦合
【结构】
* 表示层
* 业务逻辑层 biz
* 数据库访问层 dao
【调用顺序】
表示层->业务逻辑层->数据库访问层
表示层<-业务逻辑层<-数据库访问层
【命令规则】
com.biz -> Biz接口
com.biz.impl ->Biz的接口实现类
com.dao -> Dao接口
com.dao.impl -> Dao接口的实现类
我们今天在一篇主要是在上一篇的基础上的完善代码
建立以下包和类和接口:
用户登录首页代码:
处理登陆代码:
<%
//表示层 -> 业务逻辑层(biz) -> 数据库操作层(dao)
//取得用户数据
String username=request.getParameter("username");
String password=request.getParameter("password");
//将数据封装到实体类
User user = new User(username, password);
//登录
IUserBiz userBiz=new UserBizImpl();
//调用业务逻辑层的方法
String msg= userBiz.login(user);
%>
<%=msg%>
IGoodsBiz.java代码:
int insertGoods(Goods goods);
int deleteGoods(Goods goods);
int editGoods(Goods goods);
List queryGoods(Goods goods);
IUserBiz.java代码:
String login(User user);
GoodsBizlmpl.java代码:
public class GoodsBizlmpl implements IGoodsDao{
@Override
public int insertGoods(Goods goods) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int deleteGoods(Goods goods) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int editGoods(Goods goods) {
// TODO Auto-generated method stub
return 0;
}
@Override
public List queryGoods(Goods goods) {
// TODO Auto-generated method stub
return null;
}
}
IGoodsDao.java代码:
int insertGoods(Goods goods);
int deleteGoods(Goods goods);
int editGoods(Goods goods);
List queryGoods(Goods goods);
IUserDao.java代码:
User queryByName(User user);
GoodsDaolmpl.java代码:
public class GoodsDaolmpl implements IGoodsDao{
@Override
public int insertGoods(Goods goods) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int deleteGoods(Goods goods) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int editGoods(Goods goods) {
// TODO Auto-generated method stub
return 0;
}
@Override
public List queryGoods(Goods goods) {
// TODO Auto-generated method stub
return null;
}
UserDaolmpl.java代码:
public class UserDaoImpl implements IUserDao{
@Override
public User queryByName(User user) {
// 根据用户名和密码去数据库查询数据
if("lxy".equals(user.getUsername())&&"lxy123".equals(user.getPassword())) {
return new User("","");
}
return null;
}
}
User.java代码:
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
DBHelper.java代码:
//加载驱动
static{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//定义链接字符串
private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得链接
public static Connection getCon() {
try {
return DriverManager.getConnection(URL,"scott","sa123");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//关闭资源
public static void close(Connection con,PreparedStatement ps, ResultSet rs) {
try {
if (con!=null&&!con.isClosed()) {
con.close();
}if (ps!=null) {
ps.close();
}
if (rs!=null) {
rs.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
今天就到这里,拜拜ヽ(✿゚▽゚)ノ 。