jsp
Servlet:做动态网站的
JSP:做动态网站的
Servlet最大的缺陷:
1、写html标签的时候 很麻烦(JSP可以解决)
网上搜:html转js sevelet没有
不好改,重新生成
2、编码设置特别讨厌(过滤器技术)
3、一个servlet对应一个小功能(每个操作)(三阶段Struts)
JSP:概念三个单词java server page java服务器页面
很象html,但是可以在上面写java代码
数据从数据库拿出来,放在表格里
javascript在浏览器上
java代码是客户端代码
11运行myeclipse
建立web工程->jsp1,勾选上xml-打开jsp
第一行:页面自动检测乱码 定义页面,用什么语言,导入哪些包
修改编码:首选项->myeclipse ->file and editors ->jsp ->utf-8
第二行:<%啥意思
第三行
第四行 看看象什么代码? 用%>括号
改html5 删除html后面东西
第10<%=表达式 %>打印,像outpint
组成
访问jsp:
1、不需要重启服务器 访问的时候编辑代码
2、不需要配置文件
启动tomcat--访问http://localhost/jspTest/test1.jsp
控制台就输出"haha"->回下
JSP页面主要由两个部分组成:
一、html代码
二、java代码
1、jsp脚本(里面可以写上java代码) <%java代码%>
可以写在任何地方,新建一个写在body里,快捷键不能用,可以用.出来<body>
<%
System.out.print("haha");
%>
</body>
访问jsp:爽到什么地方 ?回上
java语句,里面一定不能写方法的定义(演示)
写数据类型,打印控制台,打印到页面上
servlet如何打印的,req.print
java打印页面上out.print()
<%
System.out.print("haha");
int num=10;
for(int i=1;i<10;i++){
out.print(i);//换行
out.print("<br/>");
}
%>
jsp脚本可以形成片段
<%
System.out.print("haha");
int num=10;
out.print(num);%>
<hr style="height:180px">
<%for(int i=1;i<10;i++){
out.print(i);//换行%>
<br>
<% }%>
2、jsp表达式 <%=java表达式%> 等同于 out.print(java表达式);
<%
System.out.print("haha");
int num=10;
//out.print(num);%>
<%=num%>
<%=new Date() %>
练习乘法表
下午课程:
打印出来再更改 用out.print(“<table>”) 再修改
3、jsp声明 <%! java方法的定义 %>
<body>
<%!
public String func1()
{
System.out.print("haha");
return "xixi";
}
%>
<%
this.func1();
%>
<%=this.func1()%>
<%-- jsp的注释,肚子好饿 --%>
</body>
4、jsp注释: <%-- jsp注释 --%> 生成html页面看不到,(服务器端)代码中可以看到 演示看源码 注意:面试会问到
5、jsp指令:
page指令:往往写在第一行,(导包会用到)定义页面的一些信息
如何导包?test3 为何在脚本中不能定义方法?为何没有快捷键
src 建立包--建立一个类UserService--test方法 jsp如何使用这个方法?
建立jsptest4 导入多个包<%@page import=" "%>
<%@ page import="com.james.jsp.*"%>
<body>
<%
UserService us = new UserService();
us.test();
%>
</body>
<%=(String)session.getAttribute("key")%>
session 在今天后就不用了,request response 都有
建立test5 test6.jsp接收
test5:
<body>
<form action="test6.jsp" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
<input type="submit" value="点我" />
</form>
</body>
test6
<body>
<%
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
%>
<%=username %> //美工一看就知道
<%=password %>
//跳转--重定向
<br/>
<script type="text/javascript">
alert('haha');
</script>
<%
//重定向跳转 然后弹框
response.sendRedirect("http://news.baidu.com");
%>
</body>
test7 测试session test4获取值
<body>
<%
session.setAttribute("key", "maoyun");
%>
</body>
test4追加
<%=(String)session.getAttribute("key")%>
先访问test7,再访问test4
进入9大内置对象
6、jsp动作:(明天讲 代码在最后)
<jsp:动作名 />
练习:在页面上打印矩形的99乘法表,用表格定位
1*1=1 1*2=2 1*3=3
2*1=2 2*2=4 2*3=6
3*1=3 3*2=6 3*3=9
要求:
1、不能使用out.print,也不能将html打印在页面
2、给表格背景加上间变色(奇数行是黄色,偶数行是绿色)
<body>
<table border=1>
<%
for (int i = 1; i < 10; i++) {
if (i % 2 == 1) {
%>
<tr style='background-color: yellow;'>
<%
} else {
%>
<tr style='background-color: green;'>
<%
}
for (int j = 1; j < 10; j++) {
%>
<td><%=i + "*" + j + "=" + i * j%></td>
<%
}
%>
</tr>
<%
}
%>
</table>
</body>
回到3
JSP的内置对象:
out
request
response
session(私人小仓库)
application:大仓库
测试:test8
<body>
<%
application.setAttribute("kfc", "maidanglao");
%>
8888888888888888888888888888
</body>
test4取东西
<%=(String)application.getAttribute("kfc")%>
先test7->test8->test4
然后换个浏览器访问 test4 session 得不到,application得到
application作用 刷新进入数据库, 公告存到缓存 主要区别,大项目时到时体现?
out request response session 都有对应的对象
application 对应对象啥玩意 test4 application提示:servletCotext servlet上下文->写一个java代码 test servlet建立
代码:ServletContext application = this.getServletContext();
application.setAttribute("xxx", "yyy");
先访问servlet地址-》test4 ,验证ServletContext 对应application
?jsp写forword转向怎么办?
<body>
<jsp:forward page="test8.jsp"></jsp:forward>
</body>
test8加上显示的8888888888
一个页面两个功能:test5修改
<body>
<%=request.getParameter("username")%>容易抛空指针异常,先判断
<form action="test5.jsp" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
<input type="submit" value="点我" />
</form>
</body>
作业:5个页面5个功能
servlet 打印html代码麻烦
jsp java代码麻烦
作业:
将servlet综合作业用纯jsp重新写一遍
要求:不能有servlet
1、register.jsp--一张完成注册
2、login.jsp 登陆
3、edit.jsp 编辑
4、index.jsp 显示所有用户
5、user.jsp ?id=1 显示单个用户的信息
//服务器可以问号传参?
test5 username=aaa
附加题:
对于登录的用户名和密码的验证结果,在登录页面上给出提示,不用弹框提示
用户名和密码的提示要分开,
95年的时候都用纯servlet开发网站
99年的时候都用纯jsp开发网站
2002年
2006