jsp学习笔记
1.jsp:就是在html中嵌入java代码
2.form(表单):用于收集用户输入的数据,提交数据,跳转界面.包括 input 元素、复选框、单选按钮或提交按钮等。
如下所示,action属性表示表单执行动作,提交信息的页面,可以是jsp页面,也可以是servlet的url-pattern
action一般都是跳转到对应后台方法的url,这样可以将表单数据提交给后台进行逻辑处理。
跳转的url要精准一点。url多一个"/"或者少一个"/"可能都是不一样的。
method表示Http方法(get或post)
input元素包括type,name,value等属性
type属性分为text(文本框)、button(按钮)、radio(单选按钮)、submit(提交按钮)
name属性表示元素对应的名称,在jsp中可通过内置对象request.getParameter(name)获取具体的name对应的内容
value属性表示各元素上显示的内容
<form action="index.jsp" method="post">
账号: <input type="text" name="account"><br>
密码: <input type="text" name="password"><br>
<input type="submit" value="登陆">
</form>
3.Scriptlet(脚本小程序),写在Scriptlet里面的一般是Java代码,以此区分java代码和html代码,有三种形式:
<%%>:局部变量,编写语句
<%!%>:全局变量、方法、类
<%=%>:表达式输出,用于将程序数据输出到客户端(浏览器)
也可以用<jsp:scriptlet> </jsp:scriptlet>代替<% %>
4.注意:
一个完善的jsp文件,一般是不会包含Scriptlet代码的
尽量不要在jsp中定义类和方法,可以写在javabean里;
尽量不要使用out.println()输出,而应该使用表达式输出;
5.指令:指令page设置页面编码等属性、指令include包含页面、指令forward跳转页面
6.jsp内置对象:已经new好了的对象,可以直接用
内置对象的属性范围共四种:page、request、session、application,各个内置对象的属性范围是不一样的。
page:只在一个页面保存在属性,跳转后无效;
request:只在一次请求中保存,服务器跳转后依然有效;
session:在一次会话范围中,如何跳转都可以使用,在新开浏览器无法使用;
application:在整个服务器上保存,任何用户都可以使用
内置对象分类:request、response、session、application、out、pagecontext、config、page、exception等。
常用的方法有getParameter()、setAttribute()、getAttribute()
request(请求):HttpServletRequest接口的实例化对象,用于接收客户端请求.
respon(回应):HttpServletRespon接口的实例化对象,回应客户端的请求.
session(会话):HttpSession接口的实例化对象,用于完成用户的登录、注销等功能,只能应用于HTTP协议
application:ServletContext接口的实例化对象,ServletContext代表的是整个容器的操作。属性范围为整个服务器,只有服务器重启属性才会消失
注:
Request和Session的区别:
request是获取信息--通过用户提交的表单,查询字符串,cookie等获得信息
request用在数据提交,表单数据等
session是服务端用来保存一些数据(通常是标记状态的,当然也可以保存别的)
session是服务端的记录变量,可以跟踪记录访问者动作,比如登录,退出等。
7.客户端跳转:等整个页面执行完才跳转,跳转后地址会改变,比如response.sendRedirect();
服务器端跳转:立即跳转,跳转之后地址不会有任何改变,比如<jsp:forward>指令
8.jsp标签.<jsp:useBean/>用于关联JavaBean。<jsp:setProperty/>用于设置属性
useBean标签中的id指的是实例化后的对象名称.
id="simple"相当于JavaBean simple=new JavaBean(); class是javaBean的类路径
setProperty标签中的name指的也是实例化后的对象名称,property="*"表示设置所有的set方法
<jsp:useBean id="simple" scope="page" class="com.JavaBeanTest"/> <jsp:setProperty name="simple" property="*"/>
<jsp:setProperty name="simple" property="age" param="age"/>
<jsp:setProperty name="simple" property="name" value="lin feng"/>
9.使用el表达式,避免出现大量的scriptlet代码.形式为 ${属性名称}
比如在request.setAttribute("info","el表达式")之后, <h1>${info}</h1>就相当于request.getAttribute("info")
10.jstl是jsp的标准标签库,可以减少大量的Scriptlet代码.
11.jsp取出部署的应用程序名 ${pageContext.request.contextPath} 比如应用程序名为/ ,则取得的值为http://localhost:8080/
12.包含其他页面 <jsp:include page="/bottom.jsp"></jsp:include>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了