第一部分:jsp内置对象
1. request对象、application对象的综合应用,做一个简易的留言板:多个人多时打开网站,发表留言后,可以看到大家共同的留言列表:
网站首页index.jsp,包含发表留言的表单,如下:
第3章 留言板<br>
<form action="msglist.jsp" method="get" >
作者<input type="text" name="username" >
消息 <input type="text" name="usermsg" >
<input TYPE="submit" name="submit" value="提交">
</form>
提交后,跳转到结果页面:msglist.jsp
msglist.jsp的功能是:读取表单的数据,存到一个字符串中。application有全局属性,这样,所有人的留言都被拼接到一起。
<body>
<%
String uname=request.getParameter("username");
String msg=request.getParameter("usermsg");
//
uname=new String(uname.getBytes("iso-8859-1"),"UTF-8");
msg=new String(msg.getBytes("iso-8859-1"),"UTF-8");
String data=(String)application.getAttribute("liuyancontent");
if(data==null)
data="";
data+=uname+":";
data+=msg+"<br>";
application.setAttribute("liuyancontent",data);
%>
留言内容:<br>
<%=data %>
</body>
msglist.jsp可以再拆分。比如,从request读取文本框到拼接字符串,作为msgcontrol.jsp;最后的输出,作为msgshow.jsp.
这样从msgcontrol.jsp跳转到msgshow.jsp,就可以调试分析转发和重定向的区别。时间关系,不做了。
第二部分 JavaBean
表单提交的内容,不再是分散的多个变量接收。表单的数据,被整合封装到一个类中,实体类,或者叫模型类,entity,domain等。一般情况,一个表单组件,对应一个成员变量。一张表单的数据,用一个实体对象保存,方便编程。
有普通的java写法,jsp提供了对应的简化标签:<jsp:useBean> <jsp:setProperty> <jsp:getProperty>
第三部分 Servlet
有了Servlet,表单页面,发出的<form action="字符串">,不再直接跳到结果页面。
流程是:表单页面发出提交,经过web.xml,找到Servlet,执行doGet/doPost函数,完成前台到后台。
然后,函数执行完毕,再跳转到结果页面(有转发和重定向两种方式)。
这样形成了网页负责交互界面、数据输出,后台的类负责请求、返回的调度和业务功能。前台的工作是View,后台的工作是Control,数据的保存用JavaBean或数据库(Model), 这就是MVC架构。
JavaBean和Servlet,在案例中的应用,我录了讲解视频,下载地址:
链接: https://pan.baidu.com/s/1s23lSKcF1V1s4stkPrzGQw 提取码: wk5f
JSP高级部分
所谓的高级技术,其实是做网站都应该会的。
1. 不用高级技术,做一个功能较多的JSP案例,是必要的实践锻炼。复杂的网站功能,怎样实现?可以看慕课,或一些JSP案例书籍。
2. 所谓高级技术,JSP网页,都会被tomcat处理成一个Servlet,而且能读到对应的代码。
3. response能输出图片,比如图片格式的验证码,就是这个技术。
4. 不用jsp网页,java的网络编程、安卓的网络编程可以和Servlet收发数据。
5. 没有复杂操作,简单的游戏可以用JSP实现。
6. EL表达式、JSTL标签库,自定义标签,在JSP课或者其他课程都会再学到。过滤器、监听器也应该了解,过滤和监听,在SSH框架还是有应用的情景。
7. 第三方接口的使用,比如今日头条、聚合数据、在线支付都可以了解。
这都是JSP课程很好的实践案例。实践的缺乏在各个学校都很普遍,只能呵呵了。