Java web获取专栏图片方法,学习笔记合集,整合servlet,万能DAO重点知识【诗书画唱】

一、页面跳转方式
二、传参方式
在页面中需要输入日期框的时候,我们不能够直接写三个文本输入框,可以使用脚本文件(从网上面下载)来引入一个日期框(JS文件)
在eclipse项目中使用日期框:
1、将日期脚本文件拷贝到工程WebContent目录下(可以创建子文件夹)
2、创建jsp页面,在页面中引入日期脚本文件
"3、在页面中编写如下的代码:
<input type=""text"" readonly
onclick=""new Calendar().show(this);"" />"
页面跳转的方式有两种:
1、转发
2、重定向
"区别:
1、浏览器地址栏显示的最后的地址不同,转发就显示前面的请求的地址,而重定向会显示最后跳转的页面的地址
2、转发就是一次请求,重定向是两次请求"
3、重定向可以跳转到项目外面的页面去
项目中一般建议使用转发方式跳转
JS代码中优先使用单引号
传参方式:
"1、浏览器地址栏中直接传入
http://localhost:8888/j190802/demo.jsp?act=admin&pwd=123&sex=男"
2、表单提交
一、getParameter和getAttribute的区别。
二、四大作用域:pageContext,request,session,application
三、EL表达式
getAttribute和setAttribute方法
getParameter和getAttribute的区别:
1、getParameter返回值是String,getAttribute返回值是Object
2、getParameter方法是一个单身狗,没有对应的setParameter方法
如果调用setAttribute方法,后面的程序中就必定会调用getAttribute方法
3、getParameter的使用场景:表单提交时获取数据,url路径中夹带的参数
getAttribute的使用场景:页面转发时调用。
pageContext,session和application跟request和response一样,可以直接拿过来使用
"pageContext,request,session以及application叫jsp页面的四大作用域,指的就是你放在这些对象中的变量在哪个范围内有效。
四大作用域对象都有setAttribute方法和getAttribute方法。"
pageContext:表示放在这个对象中(调用setAttribute方法)的变量在本JSP页面有效
request:表示放在同一次请求中的变量有效
session:表示同一次会话中的变量有效
application:只要不重启服务器,放在里面的变量就会一直有效
request:当进行页面转发时传递参数
session:当实现购物车功能时就需要使用session
购物车:需要访问很多的页面和发送很多的搜索请求,购物车中的数据必须要一直有效。
一、作业讲解
二、EL表达式
EL表达式就是JSP中的一种特有的语言,可以简化我们的java代码。
EL表达式写法:${表达式},注意:{}中间只能是表达式,不能是语句
EL表达式有两种运算符:.和[](JS对象的运算符)
EL表达式可以写在JSP页面的任何地方
"EL表达式中的变量的显示过程:会依次从pageContext,request,session以及
applicaion四个作用域中找这个变量,一旦找到了就返回这个值,如果四个作用域都找不到,就显示为""""(不是显示为null)"
一、EL表达式显示map和list中的值。
二、通过EL表达式加载表单数据,修改数据时使用
${}中比较两个字符串是否相等,可以使用==也可以使用eq
${message == "success" ? "登录成功" : "登录失败"}
${message eq "success" ? "登录成功" : "登录失败"}
复习三大容器:List,Map,Set
List,Map和Set都是接口,所以不能够直接new出来的
List最常用的实现类:ArrayList
Map最常用的实现类:HashMap
Set最常用的实现类:HashSet
一、EL表达式中的范围变量
二、表单提交后的EL表达式
三、EL表达式
如果是通过表单方式提交的数据,那么通过EL表达式获取就必须使用param隐式对象
EL表达式中的范围变量:
pageContext:pageScope
request:requestScope
session:sessionScope
application:applicationScope
上面四个scope变量都是用来替换getAttribute方法的
而param隐式对象就是用来替换getParameter方法的
读取数据库中的表中的数据,将这些数据组装成一个下拉框。
1、创建表eduinfo
2、在java代码中创建一个这个表对应的javabean,它的名字跟你的表名是一样的Eduinfo
3、根据eduinfo表中的列来创建Eduinfo类的属性,你的表中有几个列javabean中就有一个属性,而且属性名要跟表的列名一致。
4、创建表对应的数据访问类(dao),EduinfoDao
一、登录功能
知道实现一个功能的步骤
1、在mysql数据库中创建一个表user,表结构:id,act,pwd
"2、搭建项目,需要创建一些包:
com.jy.bean:com/jy/bean,对应每个表中的一条数据的,你有几个表就创建一个bean
com.jy.dao:com/jy/dao,负责对表进行增删改查的,你有一个表就创建一个dao"
"com.jy是怎么来的:根据你所在的公司的网址来确定,www.jy.com,你的包名就将网址
倒过来写就可以了com.jy"
"3、将数据库的配置文件db.properties放到src目录下,同时将数据库的驱动包拷贝到
工程的lib目录下。将数据库连接工具类拷贝到工程目录下"
4、创建login.jsp页面
"5、设计登录的action即doLogin.jsp页面,因为这个页面没有需要展示的东西,所以
我们将它的所有的html代码都删除。然后将doLogin.jsp的相对路径写到表单的actiion属性中。"
6、实现登录的业务,编写登录的代码
在项目中,一个方法的功能越简单越单一就越能够复用
二、登录注册功能:验证码,人脸识别,短信验证
普通的注册:输入账号密码(输入两次),生日,学历,爱好等
1、创建reg.jsp页面
2、设计一个业务处理页面doReg.jsp,将表单中的action设置为这个业务处理页面
3、表单验证,保证用户输入的数据是正确的,不会破坏后台的数据库中的数据
一、HTTP协议
二、servlet
HTTP协议:超文本传输协议,文本代表字符串的意思,超文本代表图片,音频和视频
游戏的鼻祖:泥巴游戏mud,它是一个纯的文字游戏。
"网络上面发送这些超文本时,就必须要遵守一定的规则,这样其他的人才能够接收到
的超文本内容,这个规则就叫超文本传输协议"
Javaweb就遵循HTTP协议
HTTP协议有两个非常重要的请求方式:get请求方式和post请求方式
"404:找不到你需要的资源(jsp页面,html页面以及servlet),访问路径如果不会就
会报这个错误"
500:表示后台代码出现了错误(java代码)
200:表示请求成功了
"Servlet:由java代码编写的一个小服务程序,它的作用非常的广泛,可以实现非常多
的功能,登录注册增删改查,附件上传下载,导出excel文件,servlet其实就是一个java类。"
"使用servlet:servlet虽然是一个java类,但是不能够直接运行。它必须启动tomcat服
务器以后才能运行。"
创建一个servlet,运行它的时候在后台打印Hello world.
1、创建一个java类,让它继承HttpServlet类,重写doGet和doPost方法。
2、打开web.xml配置文件,对servlet进行配置。
快捷配置一个servlet:
当你在浏览器地址栏直接输入一个servlet的访问路径时,调用的是doGet方法
当在表单中运行一个servlet时,会根据表单的method属性来决定是调用doPost方法还是doGet方法。
post提交方式提交表单数据时,提交的数据不会显示在浏览器地址栏中
get提交方式提交表单数据时,提交的数据会显示在浏览器地址栏中。
post提交方式比较安全的。
get提交方式提交的数据量比较小
post提交方式提交的数据量比较大
一、servlet生命周期
二、init和destroy
三、loadonstartup servlet
四、servlet页面跳转方式
创建servlet的方式:
1、创建一个java类,让他继承HttpServlet,然后在web.xml中添加一段配置代码。
2、new servlet就可以创建出来
在项目中,创建servlet实例的时机:
"1、当项目启动以后的第一个用户请求这个servlet时,就会new出一个servlet实例,
当这个用户使用完以后,servlet实例不会消失,会一直保存在项目中,当下一次有用户再次请求这个servlet的时候,就不会再new这个servlet,会直接使用前面保存在项目中的servlet实例。"
2、随着项目启动,会自动的创建servlet
"第二个用户也是访问这个servlet,不会再new出一个servlet实例了,它会直接使用第
一次new出来的servlet实例"
loadonstartup servlet:随着项目的启动会自动运行的
通过servlet来进行页面跳转:
创建一个LoginServlet,运行这个servlet以后能够跳转到login.jsp页面
jsp页面每一个页面其实都是一个servlet
jsp页面转换成servlet类以后的源代码可以在tomcat服务器中的work目录下找到
jsp页面:在html代码中写java代码
servlet:在java代码中写html代码
实现重名验证
一、隐藏表单域
二、servlet中传递参数的方法
三、servlet中的四大作用域
四、jsp和servlet之间的关系(代码块)
jsp就是一个servlet,jsp页面专门负责展示内容,servlet专门用来做业务处理。
login.jsp:显示登录页面
doLogin.jsp:必须使用servlet来代替了,专门用来处理登录业务逻辑的
<%%>中的代码其实就是写在service方法中的代码
<%=%>中的代码也是写在service方法中的代码,就是一个打印变量的语句
<%!%>中的代码其实就是servlet的成员属性
<%----%>
1、url传参方式:通过在访问地址后面添加上?和&方法
访问地址:http://localhost:8888/j190802/ps?act=admin&pwd=123
2、表单传参方式:通过表单的action属性调用servlet进行传参
隐藏表单域:
"当我们修改数据时,id是不能够修改。id是不应该显示在页面上,但是修改数据提交
表单时又需要这个id值。"
一、servlet中的四大作用域
二、购物车功能实现
幸存者偏差
jsp页面有四大作用域:pageContext,request,session,application
jsp就是一个servlet,所以servlet中肯定也有四大作用域
pageContext在servlet中就相当于this
request就是方法的参数,两者一样
session在servlet中通过request.getSession()的方法获取
application在servlet中通过this.getServletContext()的方法获取
实现购物车功能
"登录网站,打开商品列表界面,选择你喜欢的商品进行浏览(看很多页面),一旦发现
喜欢的商品,就要将商品放入到购物车中。购物车中的数据还在一直存在"
"要发送很多的请求,最好将购物车中的商品放到session中,这样的话不管你发送多少
次请求,购物车中的数据都不会消失掉。"
怎样存放商品:商品的详细信息(订单对象),商品数量,最终选择使用map来存放数据
List,Set,Map
一、实现个人游戏管理系统
1、创建表:每个表应该有一个与业务无关的主键(int类型)
2、项目的准备工作:导入mysql数据库的驱动包和db.properties文件(src目录下)
"3、搭建一下项目的框架:项目中的代码不是写在一个类里面运行就可以了,我们应该
把代码有条理的把它写在不同的java类中,让他们一起工作。"
简单分层处理:
com.jy.bean:存放表对应的数据模型的。每个表都对应一个bean类
com.jy.dao:用来对表进行增删改查的类。每个表都对应个dao类
com.jy.controller:就是存放servlet的。
com.jy.utils:存放项目中的一些常用工具类的,创建数据库的连接工具类
4、写界面:创建游戏管理查询界面,游戏列表界面和游戏新增界面
5、实现按钮的跳转页面的功能,具体的查询新增功能暂时不需要实现
6、编写后台业务代码
jsp页面只负责做展示,尽量不要把业务代码写在jsp页面上。
一、正则表达式
JS和JAVA等多种语言中都可以使用正则表达式,而且语法规则都一样
正则表达式中的特殊字符:
?:表示出现的次数是1或者0,+:出现的次数不能为0,*:可以出现任意多次
^以什么开头,$以什么结尾
.表示换行符\n以外的任何字符
正则表达式中的元字符
一、过滤器
javaweb中,除了servlet以外,还有一些比较重要的组件filter,listener
servlet:java小服务程序
filter:过滤器
listener:监听器
javaweb的三大组件,他们都是一个java类。
登录就直接看到个人中心页面。在访问这个页面之前,需要检查你是否有登录?
请求regServ之前,会先执行过滤器中的代码。
第一个过滤器FirstFilter
第二个过滤器SecondFilter
FirstFilter中的doFilter方法中的代码
SecondFilter中的doFilter方法中的代码
regServ中的代码
SecondFilter中doFilter方法中的代码
FirstFilter中doFilter方法中的代码
创建登录的servlet,创建一个注册的servlet,创建一个index.jsp页面
请创建一个过滤器,当执行登录的servlet时,才运行过滤器中的代码。
请创建另外一个过滤器,当执行jsp页面时才会运行过滤器中的代码。
进行匹配,如果servlet的url路径跟Filter中的路径匹配,就会执行这个过滤器中的代码
过滤器的url路径匹配:
1、/*运行项目中的任何servlet和jsp页面都会执行对应的filter
2、*.jsp运行项目中的任何jsp页面都会执行对应的filter
3、/ls运行项目中路径中包含有ls的servlet就会执行对应的filter
淘宝网:login.jsp,cart.jsp,center.jsp
当在浏览器地址栏输入login.jsp页面的访问路径时,可以直接跳转到index.jsp页面。
当在浏览器地址栏输入cart.jsp,center.jsp页面,不能直接跳转过去,要先跳转到登录页面才可以。
通过过滤器,实现了所有的servlet和jsp页面的乱码处理功能
实现了强制登录的功能(拦截非法用户的功能)
如果发现某一类servlet中有重复的代码,就可以考虑使用过滤器
一、监听器Listener:其实就是一个java类
1、监听Session、request和application的创建和销毁
HttpSessionListener,ServletContextListener,ServletRequestListener
2、监听对象属性变化
HttpSessionAttributeListener,ServletContextAttributeListener,ServletRequestAttributeListener
3、监听Session内的对象
HttpSessionBindingListener,HttpSessionActivationListener
跟js中的事件一样:
项目一启动就要打印一句Hello world
方法一:使用loadonstartup servlet可以实现
方法二:使用Listener实现,当项目启动时马上运行代码
ServletContextListener用来监控application对象的创建和销毁的监听器
当启动一个javaweb项目时,会创建唯一的一个application对象
servlet,filter和lister都需要在web.xml文件中进行配置。
创建listener的步骤:
1、创建listener类
2、在web.xml文件中进行配置
代码缓存时可以使用监听器:ServletContextListener
统计本网页的访问次数。
统计在线人数。(必须使用HttpSessionListener,用来监视session对象的创建和销毁的)
"ServletRequestAttributeListener:当调用request对象的setAttribute方法时,会
运行这个监听器中的代码"
角色和权限:不同的角色登录到系统中看到的内容是不一样的,这个就叫权限问题。
一、附件上传
本地的拷贝:在同一台电脑上进行的操作。例如将一个文件从d盘拷贝到c盘。
在两台电脑之间进行的拷贝,或者通过网页的方式进行的文件的拷贝。
附件上传的步骤:
1、导包(附件上传的包有很多种,我们今天使用的是这些包中的一种)
2、创建附件上传的jsp页面
3、创建附件上传的servlet
在附件上传中,除了type="file"的input标签以外,其他的input的isFormField都是true
地址:http://192.168.43.208:8888/j1908021/index.jsp
一、上传图片后显示图片
二、附件下载
将需要下载的文件放到服务器上,然后客户端就可以通过访问网页来下载响应的文件。
1、将需要下载的文件放到服务器上去
2、导包(附件上传的包一样)
3、创建附件下载的jsp页面download.jsp
4、创建一个servlet实现附件下载功能
访问地址:http://192.168.43.208:8888/j1908021/download.jsp
一、泛型参数
二、实现万能DAO
一、整合servlet
登录功能,注册功能,修改密码:公共模块
商品新增,商品修改,商品查询,商品删除:商品模块
"将一些功能放到同一个servlet中执行。根据模块功能整合,也就是说将同一个模块中
的功能写在一个servlet中。"
怎么样将几个功能写在同一个servlet中,通过url传参的方式
