3.30
MyEclipse的配置以及第一个web项目的编写
Web项目的目录结构:
1、src
2、类库
3、WebRoot项目根目录
4、xml 资源文件
Web项目的虚拟路径
Properties-MyEclipse-Web-Web Context-root 可以修改虚拟路径。
如修改为 helloworld,就得用新名字访问。(实际上是改变了文件夹的名称)
使用Eclipse开发时必须要其支持JavaEE开发的。new-web-Dynamic web Project,且需要配置好tomcat等。支持的字符集需要改成UTF-8
修改默认端口号
conf/server.xml
中
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
JSP构成
jsp指令:
page指令:一个页面可以有多个page
include:可将外部文件嵌入该jsp文件中
taglib:定义新的标签库
<%@page 属性1="value"……%>
常用的三个属性
language 指定JSP页面使用的脚本语言,默认为java
import 应用脚本语言中使用到的类文件,默认为无//不是include
contentType 制定编码方式,默认值为text/html,ISO-8859-1
JSP注释
HTML注释
<!--content-->//客户端可见
JSP注释
<%--注释--%>//客户端不可见
//
/*
* 不可见
**/
JSP脚本
<%java代码%>
JSP声明
在JSP中定义变量与方法
<%!Java代码%>
JSP表达式
在JSP页面中执行的表达式,直接将结果显示到页面上面
<%=表达式%>//表达式不以;结束
JSP页面的生命周期
jspService()方法被用来处理客户端的请求,第一次请求时会执行一个构造方法,每一个请求就创建一个多线程,多个请求就多个线程。要注意线程安全。
用JSP打印99乘法表
(业务逻辑)
JSP内置对象
web容器创建的一组对象,不需要new就可以使用。
out就是一个内置对象
以下为9大内置对象
常见的:
out\request\response\session\application
不常见的:
Page\pageContext\exception\config
Web程序的请求相应模式
用户发送request
服务器给用户发送response
如:登录时就在request中封装了用户名与密码。
缓冲区
Buffer,用于保存零时数据,
3.31
out对象
为JspWriter类的实例,
有 println、clear方法(在flush后使用回抛出异常)、clearBuffer、flush、getBufferSize、getRemaining、isAutoFlush、close
get 与post 的区别
<form name ="regForm" action="动作/dologin.jsp"method="提交方式/get/post">
</form>
get-明文,在URL可以看到数据,2KB,安全低,效率高——搜索、查询等使用
post-封装在HTML HEADER中,适合提交数据量大,安全性高的用户信息,注册、修改、上传。
HTML代码
表单:
<form >
<table>
<tr>
<td></td>
</tr>
</table>
</form>
tomcat出问题了
4.1
才是空格啊啊,不是nbsq
在pageEncoding中也设为“utf-8”才可以显示汉字
表格的设立
request对象
客户端的请求信息被封装在request对象中。
HttpServletRequest类的实例,在完成类的请求之前一直有效。
中文乱码问题解决
request.setCharacterEncoding("utf-8");
<a href="doLogin.jsp?username=你妹">测试URL传的参数</a>//这个解决不了,只能修改tomcat文档
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
4.2
用户名为:<%=request.getParameter("username")%>
request.getParameterValues("favorite");//返回
request对象的setAttribute()方法可以再属性列表中添加一个属性,与此属性配使用的方法还有 getAttribute和removeAttribute
cookie管理
用于表示用户身份,记录账号与密码,跟踪重复用户。
//cookie没看完
4.3
工作室内完成了:
1、学工处的Flash Banner修改
2、招就处的Flash Banner修改
3、与学工处与音乐学院协调修改网站
4.4
response 对象
response.getWriter().write("hahaha");一定优于其他的out.println方法。除非你使用了out.flush()
sendRedirect(location);这是一个请求重定向,进去就会重定向到location,注意注释掉前面说的flush
请求重定向与请求转发的区别
请求重定向:客户端行为,response.sendRedirect(),2次请求,前一次请求的对象不会保存,URL地址会变
请求转发 :服务器行为,request.getRequestDispatcher().forward(req,resp);一次请求,转发后请求会被保存,URL不会变
session对象
session是一个JSP内置对象
session对象再第一个JSP页面加载时被自动创建
一个会话:从连接到服务器开始到退出访问服务器时被称作一个会话。
访问一个服务器,但又需要在不同的页面中切换,用某种方法来标识是这个用户就需要用到session对象。
是HttpSession的实例
生命周期
1、创建:客户端第一次访问jsp或者Servlet的时候,服务器会创建一个SessionID。每次客户端发送请求的时候,都会将此SessionId携带过去,服务器对次进行检验。
2、活动:通过超链接打开的新的页面属于同一次会话,当前页面没有全部关闭,重新打开新的浏览器窗口访问同一资源时属于同一次会话。除非关闭所有的页面,重新访问JSPorServlet,时就会创建新的会话,此时会话仍是活动的!!;
3、销毁:调用了session.invalidate()方法;过期、服务器重启
tomcat的默认超时时间为30分钟,或调用setMaxIncactiveInterval()方法设置超时时间//这里的时间是秒
再web.xml文档中配置(添加)
<session-config>
<session-timeout>
10//单位为分钟
application对象
实现了用户间的数据的共享,可以存放全局变量。
开始于服务器的启动,终止于服务器的关闭。
在用户前后链接或不同用户之间的连接中,可以对application对象同一属性进行操作。
任何地方对application对象属性的操作都影响到其他用户对此的操作
服务器的启动和关闭决定了application对象的生命
application对象是ServletContext类的实例。
常用方法:
1、 setAttribute(String name,Object value)
2、 getAttribute(String name );
3、Enumeration attirbutes = application.getAttributeNames();
4、getServerInfo();
page对象(Object)
类似于java中的this。
getClass();
hashCode();
equals();
copy();
clone();
toString()
notify();
notifyAll();
pageContext对象(PageContext)
提供了对JSP页面内所有的对象以及名字空间的访问。
可以访问本页所在的session,也可以取本页面所在的application的某一属性值
相当于集所有功能的集大成者,访问权限很大
include(xxxx.jsp)
config对象
是在Servlet对象初始化时,JSP引擎传递信息用的——Servlet初始化时所用到的参数,服务器的有关信息——ServeltContext对象,常用方法如下:
getServeltContext
getInitParameter(String name)
getInitparameterNames();//枚举
Exception对象
要想使用他, 要先
isErrorPage ="true";否则无法编译
getMessage();
toString ();
printStackTrace();
FillInStackTrace();
A页面中的异常,设置errorPage=“b.jsp”;
B页面中设置异常为:“isErrorPage="true";”