JSP总结(详细,遇到的问题,解决⽅案)⽂章⽬录
1. 初始JSP
静态内容: html标签和样式表 js
⼩脚本:<%%>
表达式:<%=srt%>向页⾯输出内容
指令:<%@ page %>
标准动作:<jsp:include/>
声明:在jsp页⾯中声明⼀个⽅法<%!%>
注释:// /**/ <!-- HTML注释-->
注释之间的区别
html 页⾯中的注释,在F12中是可以看到的
java 代码中的注释在F12中看不到
2. JSP数据交互
//获取⼯程根⽬录
String path = ContextPath();
//设置读取请求信息的字符编码为UTF-8
request.setCharacterEncoding("UTF-8");
//通过表单的name属性,获取对应的值,也可以获取url中的?后⾯的值
String name = Paramter("name");
//通过表单的name属性,获取对应的⼀组值(复选框,下拉列表等)
String[] name = ParamterValues("names");
post:⽅式提交过来的表单,必须在接受页⾯中通过setCharacterEncoding("UTF-8")进⾏转码
get:⽅式提交过来的表单,不需要进⾏进⾏转码,需在配置⽂件中进⾏配置
//查询字符串应⽤
<a href="color.jsp?color=⾚⾊&id=1">⾚⾊</a>
//防⽌浏览器从缓存中取数据 ?_=<%=new Date().getTime() %>
<link rel="stylesheet" href="css/index.css?_=<%=new Date().getTime() %>">
3. JSP中内置对象
jsp的内置对象
3.out -------输出,向页⾯输出
4.session -------⼀次会话(多次请求)
(1) session.setMaxInactiveInterval(1000)--设定session的会话时长
(2)当浏览器关闭的时候,保存在session中的值,也会被摧毁
(3)通过removeAttribute去摧毁保存在session中的值
//target跳转⽅式
el表达式获取值target='parent';在浏览器跳转⾄⽗级,(URL)
target='路径';在框架内跳转指定路径(框架本⾝)
4. 数据传输
//回显⽅式
//下拉菜单回显⽅式:
$("[name=roleId] [value="+$("[name=hideRoleId]").val()+"]").attr("selected",true);
$("[name=roleId]").val($("[name=hideRoleId]").val());
/
/⽂本框回显⽅式:
< input type="text" value="<%=userName==null?"":userName%>" name="userName">
<;两种处理⽅式:
⽅式⼀:隐藏域,作⽤存储查询出来的信息,然后通过DOM操作,获取隐藏域内容,赋值给下拉列表
⽅式⼆:⾃定义属性data,作⽤存储查询出来的信息,然后通过DOM操作,获取属性中的值,赋值给下拉列表> //提交⼀个复选框如果未勾选接收过来的是null
stu.Parameter("marry")==null?false:true);
//多个复选框赋值
var hobby = $("[name=hideHobby]").val().split(";");
$("[name=hobby]").val(hobby);<;隐⼠迭代>
//批量删除
//关于复选框,method只会提交已经选择的复选框; 必须⽤表单提交
<input type="checkbox" value="<%=i.getId()%>" name="boxs">//设置值
<%String[] boxs = ParameterValues("boxs");%>//获取值
<!--使⽤⾃定义属性赋值⽤于select下拉框-->
$("[name=stuGrade]").val($("[name=stuGrade]").attr("data"));
5. 提交表单事件
//提交表单事件
$("form").submit(function(){})
//⾃动触发事件
$("表单名").trigger("submit");
6. 分页查询
<%
int pageNo =1;//页码
int pageSize =3;//显⽰条数
int totalCount = Count();//总条数
int totalPage =(totalCount-1)/pageSize+1;//总页数
String pageStr = Parameter("page");//获取url中?page的值
//判断并复制
if(pageStr!=null &&!pageStr.equals("")){
pageNo=Integer.parseInt(pageStr);
}
int prevPage = pageNo==1?1:pageNo-1;//上⼀个
int nextPage = pageNo==totalPage?totalPage:pageNo+1;//下⼀个
%>
全查、条件查询、条件查询⾼亮显⽰(a标签)、查看详情、分页查询。添加、修改、删除、批量删除。
新闻发布系统(session会话控制、过滤器、后台搭建、新闻主页)
7. Servlet
<%
@WebServlet("/doBatchDelete.shtml")
public class doBatchDelete extends HttpServlet {
@Override
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { }
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
doGet(req, resp);
}
}
//地址栏
/**
* 实现servlet
* 1. 创建普通Java类
* 2. 实现servlet的规范, 继承HttpServlet类
* 3. 重写service的⽅法, ⽤来处理请求
* 4. 设置注解, 指定访问路径
*/
@WebServlet("/Servlet01")
@WebServlet(name="Servlet01",value="/ser01")
@WebServlet(name="Servlet01",value={"/ser01","/ser02"})
@WebServlet(name="Servlet01",urlPatterns="/ser01")
@WebServlet(name="Servlet01",urlPatterns={"/ser01","/ser02"})
//编码格式
request.setCharacterEncoding("UTF-8");// 请求
response.setCharacterEncoding("UTF-8");// 响应
response.setHeader("content-type","text/html");// html
//转发和重定向的应⽤
转发:⼀般⽤于查询操作如(⾸页查询,更新查询等)就是把数据读出来然后在进⾏赋值,代表两次请求;
重定向:⼀般⽤于增删改如(增加,删除,修改等);把数据读出来执⾏SQL;
response.sendRedirect(path+"/indexServlet.shtml");//重定向⼀般加上path
//HttpRequest常⽤⽅法
// 获取客户端请求的完整URL (从http开始,到?前⾯结束)
String url = RequestURL().toString();
System.out.println("获取客户端请求的完整URL:"+ url);
// 获取客户端请求的部分URL (从站点名开始,到?前⾯结束)
String uri = RequestURI();
System.out.println("获取客户端请求的部分URL:"+ uri);
// 获取请求⾏中的参数部分
String queryString = QueryString();
System.out.println("获取请求⾏中的参数部分:"+ queryString);
// 获取客户端的请求⽅式
String method = Method();
System.out.println("获取客户端的请求⽅式:"+ method);
// 获取HTTP版本号
String protocol = Protocol();
System.out.println("获取HTTP版本号:"+ protocol);
// 获取webapp名字(站点名)
String webapp = ContextPath();
System.out.println("获取webapp名字:"+ webapp);
// 获取指定名称的参数,返回字符串
String uname = Parameter("uname");
System.out.println("uname的参数值:"+ uname);
// 获取指定名称参数的所有参数值,返回数组
String[] hobbys = ParameterValues("hobby");
System.out.println("获取指定名称参数的所有参数值:"+ String(hobbys));
//request作⽤域
通过该对象可以在⼀个请求中传递数据,作⽤范围:在⼀次请求中有效,即服务器跳转有效
// 设置域对象内容
// 设置域对象内容
request.setAttribute(String name, String value);
// 获取域对象内容
// 删除域对象内容
%>
8. Include包含
include静态包含
格式:<%@ include file='要包含的页⾯地址'%>
特点:
1.将内容进⾏了直接的替换
2.静态包含只会⽣成⼀个源码⽂件,最终的内容全部在_jspService⽅法中(源码⽂件中)
3.不能出现同名变量
4.运⾏效率⾼⼀点点。耦合性较⾼,不够灵活
<%@ include file="1-header.jsp"%>
<h2>主题内容</h2>
<%@ include file="1-footer.jsp"%>
include动态包含
格式:<jsp:include page=“要包含的页⾯路径”></jsp:include>
特点;
1.动态包含相当于⽅法的调⽤
2.动态包含会⽣成多个源码⽂件
3.可以定义同名变量
4.效率⾼,耦合度低
注:当动态包含不需要传递参数时,include双标签之间不要有任何内容,包含换⾏和空格使⽤动态包含传递参数
<jsp:include page="要包含的页⾯路径">
<jsp:param name="参数名" value="参数值"/>
</jsp:include>
注: name属性不⽀持表达式,value属性⽀持表达式
获取参数: Parameter(name);
<jsp:include page="1-header.jsp"></jsp:include>
<h2>主题内容</h2>
<jsp:include page="1-footer.jsp"></jsp:include>
<%--动态包含传递参数--%>
<%
String str ="hello";
String url ="1-footer.jsp";
%>
<jsp:include page="<%=url%>">
<jsp:param name="uName" value="admin"/>
<jsp:param name="msg" value="<%=str%>"/>
</jsp:include>
9. EL表达式
<%
EL表达式
作⽤:简化JSP代码
格式:${域对象的名称}
操作对象: EL表达式⼀般操作的是域对象中的值,不能操作局部变量
操作范围:
page范围:在当前页⾯
request范围:在⼀次请求
session范围:在⼀次会话
application范围:在整个应⽤程序
注:
1.如果EL表达式获取域对象的值为空,默认显⽰空字符串
2.EL表达式默认从⼩到⼤范围去,到即可,如果四个范围都未到,则显⽰空字符串
2.EL表达式默认从⼩到⼤范围去,到即可,如果四个范围都未到,则显⽰空字符串查数据时可以使⽤四个域对象对应的空间对象,分别是:
pageScope,requestScope,sessionScope,applicationScope
%>
<%
//存储
pageContext.setAttribute("name","1");
request.setAttribute("name","2");
session.setAttribute("name","3");
application.setAttribute("name","4");
%>
//取值
获取局部变量的值: ${str}
获取域对象:${name}
获取指定范围的域对象
page范围:${pageScope.name}
request范围:${requestScope.name}
session范围:${sessionScope.name}
application范围:${applicationScope.name}
<%--
EL表达式的使⽤
获取list
获取list的长度 ${list.size()}
获取list指定下标值 ${list[下标]}
注:list表⽰的时限域变量名
获取map
获取map中指定key的value
${map.key}
${map["key"]}
注:map代表的是限域变量名
获取JavaBean
获取JavaBean中的属性
${javaBean.属性名}
${属性名()}}
注:JavaBean中属性字段必须提供get⽅法
empty判断域对象是否为空
为空:true;
否则:false;
--%>
<%
//List
List<String> list =new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//存储到域对象中
request.setAttribute("list",list);
//map集合
Map map =new HashMap();
map.put("aaa",1111);
map.put("bbb",2222);
map.put("ccc",3333);
request.setAttribute("map",map);
//JavaBean对象
User user =new User();
user.setUserId(1);
user.setuName("admin");
user.setuPwd("admin");
request.setAttribute("user",user);
%>
<h4>获取list</h4>
获取list的size:${list.size()}<br/>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论