01.jsp复习
1.创建bean和tag时发生的… tomcat导致jsp乱码 改conf的server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" />
2.jsp html插入java
3.安装
- 安装jdk
- 下载tomcat,放到webapp 默认8080 bin/startup.bat
乱码, conf/logging 改最后一个utf8为gbk
使用myeclipse- 把tomcat和jdk配置到myeclipse set->java->installment–>add jdk of jar
- servers->tomcat—>enable
- new web program ee6.0
- dir:webroot just as html
- 服务器标志打开tomcat 7.0(无用) 访问
旁边的deploy按钮 部署到cat 访问http://xxxx:8080/项目名/文件名- server配置文件可以改服务目录
4.jsp转换
jsp转javac文件(servlet)–>java文件
<% int i=0 %>
<%=i%>
<%
for(int i=1;i>=3;i++){
out.println("zzz")
out.println("<h"+i+">"+i+"<h"+i+"/>")
}
%>
//可以不用写引号
.p{xxx}
class=p
5.注释
<!-- h5 -->
<% /* java*/
//gross
%>
<%-- jsp user can't read in website--%>
6.定义变量/方法
<%! int a=1; int aa(){}%> //全局变量,不同的路径也可以
<%=aa()%>
<% int a=1; aa()%> //局部
7.page 导入多个文件
<%@ page language="java" import="xxx,com.sql" pageEncoding="GBK" %>
Buffer缓冲器大小
isFlush是否刷新
isThreadSafe设置是否多线程 true 开启多线程
<%page info="hello" %>
<%=getServletInfo()%>
8.include引入文件 相对路径
<%@ include file="aa.jsp"> //合成一个页面,静态文件 快(编译时)
<jsp:include page="aa.jsp" flush=""> 不刷新//可引入动态和静态文件 慢(运行时执行)
forward param useBean
9.动作指令(传递参数) 选择题 param必须配合使用不能单独使用(全部编码使用gb2312,弹出框!!不要修改编码)
//不能包含localpath变量
<% request.setCharacterEncoding("gb2312")%>
<jsp:include page="aa.jsp" >//乱码
<jsp:param name="id" value="11" /> //相当于get post
</jsp:include>
//aa.jsp接收变量
<%=request.getParameter("id") %>
//include jsp页面编码集要一样
10.forward跳转到另外一个网页
<jsp:forward page="aa.jsp" /> //地址栏文件没有改变,内容改变了
<jsp:forward page="aa.jsp" >//乱码
<jsp:param name="id" value="11" /> //相当于get post
</jsp:forward>
//form reset action method
//间接通过一个jsp页面判断
<%
if(aa="111"){
%>
<jsp:forward page="xx.jsp">
<%
}else
%>
<jsp:forward page="xx.jsp">
11.tag文件(类似jsp) 代码复用 处理过程与显示分离
//WEB-INF创建文件夹tags(必须)/sum.tag(只能由文件夹的jsp调用) 不能出现page标签
//先引入
<%@ taglib tagdir="/WEB-INF/tags" prefix="func"%>
<func:triangle t="12" b="13" ></func:triangle>
//在/WEB-INF/tags创建triangle.tag
<%@ tag import="java.util.*" pageEncoding="gb2312" %>
<%@ attribute name="t" required="true" %> //必须传递参数, 默认 type="java.lang.Double"
<%@ attribute name="b" required="true" %>
<p>
<% %>
<%=t%>
</p>
t=(x+y+z)/2
w=sqrt(t*(t-x)*(t-y)*(t-z))
String res=String.format("%.2f",w)//保留2位小数
//jsp调用 import
<%@ taglib tagdir="/WEB-INF/tags" prefix="abc"%>
<abc:sum t="hello" />
//传递参数
12.tag给jsp传数据
<%@ variable name-given="name" variable-class="java.lang.String" scope="AT_BEGIN" %> //在jsp标记哪个地方使用,在标记之前可以使用
//jspContext.setAttribute("name","jams");
//AT_BEGIN
<abc:sum t="hello" >
//NESTED
</ abc:sum t="hello">
//AT_END 建议
<%=name %>
13.得到tag里面的值(多次调用)
<ok:sum>
ok
</ok:sum>
<ok:sum>
ok1
</ok:sum>
//tag文件
<jsp:doBody/>
14.案例
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'giveMess.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
分别输入三个数值,并选择这三个数值代表三角形三边的长度或梯形的上底、下底和高
<form action="./inputAndShow.jsp">
<p>
输入a:<input type="text" name="a"></input>
</p>
<p>
输入b:<input type="text" name="b"></input>
</p>
<p>
输入c:<input type="text" name="c"></input>
</p>
<p>
三角形<input type="radio" name="fig" value="1"></input>
梯形<input type="radio" name="fig" value="2"></input>
</p>
<p>
<input type="submit" name="submit"></input>
</p>
<%! String a,b,c,fig;
%>
<%
a=request.getParameter("a");
b=request.getParameter("b");
c=request.getParameter("c");
fig=request.getParameter("fig");
%>
<ok:GetArea a="<%=a %>" b="<%=b %>" c="<%=c %>" fig="<%=fig %>">
</ok:GetArea>
<%=res %>
</form>
</body>
</html>
//GetArea.tag
<%@ tag language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ attribute name="a" required="true" %>
<%@ attribute name="b" required="true" %>
<%@ attribute name="c" required="true" %>
<%@ attribute name="fig" required="true" %>
<%@ variable name-given="res" variable-class="java.lang.String" scope="AT_END" %>
<%!
String deal(String a,String b,String c,String fig){
int a1,b1,c1,fig1;
int area;
try{
a1=Integer.parseInt(a);
b1=Integer.parseInt(b);
c1=Integer.parseInt(c);
fig1=Integer.parseInt(fig);
}catch(Exception e){
return "输入数字错误";
}
if(fig1==1){
//triangle
if((a1+b1)>c1 && (a1+c1)>b1 && (c1+b1)>a1){
double t=(a1+b1+c1)/2.0;
double res=Math.sqrt((t*(t-a1)*(t-b1)*(t-c1)));
return "三角形面积为"+res;
}else{
return "三角形两边之和大于第三边";
}
}else if(fig1==2){
double res= (a1+b1)*c1/2.0;
return "梯形面积为:"+res;
}
return "aa";
}
%>
//直接放在application里面比较容易
<%
String res=deal(a,b,c,fig);
jspContext.setAttribute("res",res);
%>
15.request(http) response session application
javax.servlet.http.HttpServletRequest.封装整个请求对象
get //字符不超过255个,明文
form href也可以接收到
//设置中文
request.setCharacterEncoding("gb2312");
<select name=""><option value=""></option></select>
String a=getParameter("");
getParameterValues("habit");//得到相同的name
checkbox
16.response
//设置响应头
setContentType("text/html;charset=gb2312"); //application/msexcel (excel) msword(word)
//必须要配合使用,设置文件名,防止传输失败,word是docx,excel是xlsx
response.reset();
response.setContentType("application/msexcel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+ new String(("下载后Excel文件名称" + ".xlsx").getBytes(), "iso-8859-1"));
response.flushBuffer();
sendRedict("./aa.jsp");//可以重定向到任意url ,<jsp:forward>只能在容器内
setHead("k","v");
addHead
//刷新网页,1秒刷2次 ,2秒后跳转
response.addHeader("refresh", "1");
setHeader("refresh","2;URL=aa.jsp");
//在jsp写response会保存网页
response.getWriter().println("用户名或密码不正确,请重新输入!");
response.getWriter().println("<br/>两秒钟后自动跳转到登录页面!");
response.addHeader("refresh", "2;URL=./ex4-07.jsp");
17.application只有一个 是全局变量(共享),生命最长
setAttribute("k","v"); //可以设置所有类型
getAttribute("k");
println();//输出数据
18.session 全局 会话:浏览器连接服务器到他的结束(id) 解决application范围太广
再次连接不需要新的(30min发心跳),重新打开创建新的,
getId();
setAttribute("k","v"); //可以设置所有类型
(String) getAttribute("k");
invalidate();remove all
getMaxInactiveInterval() //发呆时间 没有操作的时间,max 30min
set
isNew();//new create
19.javaBean(可重复使用的bean数据,jsp使用数据,前后端分离)特殊的java文件
servlet运行在服务器的java文件
javaBean运行在客户端1.定义类(jsp不用serializable)根据自己的需要来改
public class
无参构造
所有成员(getter 和setter) private boolean类型为(isXXX方法代替setter), 方法public
重启tomcat
2.分类
可视
不可视(gui)
3.jsp调用javaBean
//在page指定导入包
,import top.jams.*
<%
new Person();
%>
//上面使用表单同名可以给下面赋值
<form>
<input type="text" name="id"/>
<input type="text" name="password"/>
</form>
//使用标签来使用 与bean属性同名.设置表单,可以放到page作用域
<jsp:setProperty name="aa" property="*">
<jsp:setProperty name="aa" param="pass" property="password" />//param是form的名称,解决名字不同的问题
----------------------
//加载bean,代替引入类
<jsp:useBean id="calc" class="com.aa.Calc">hello student!</jsp:useBean> //相当于一个html标签
<jsp:useBean id="name" scope="page" class="xxx">//存活时间 默认page(当前页面) ,其他 request session application
<jsp:setProperty name="aa" property="id" value="1"/> //得到属性
<jsp:getProperty name="aa" property="id" />
20.Java servlet(tomcat创建响应用户请求的对象)
1.跨平台
2.功能强大
3.性能好
4.可拓展
servlet和servlet.http不在jdk中,复制tomcat的servlet-api.jar到jre/lib/ext的继承httpServlet(实现service接口)
eclipse创建 new -->servlet
//jsp name对应web.xml的名字
//简化
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name></display-name>
<servlet>
<servlet-name>myServ</servlet-name>
<servlet-class>com.aa.myServ</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServ</servlet-name>
<url-pattern>/servlet/myServ</url-pattern>
</servlet-mapping>
</web-app>
21.请求转发和重定向的区别
请求转发 request /xxx到web网页地址 并且携带之前的request数据
重定向 response /项目名/web网页 不携带之前的数据
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!