配置虚拟路径 识别项目文件
1.在tomcat的安装路径里 conf/server.xml文件里 <Host>中 写入<Context docBase="D:/a" Path="/a"/>
path里是相对路径 凡是访问相对路径 相当于访问docbase的那个路径(目的路径)
并且是需要重启
2.在conf/catalina中直接新建项目名.xml文件 写上述语句 直接写就可以 并且不需要重启
项目名就是你要读取的那个名字
虚拟主机
还是在server.xml 的engine中 增加一个<Host>
<Host appBase="项目实际位置 " name=“www.suibian.com” >
<Context docBase="D:/a" Path="/a"/>
</Host>
再把defaultHost=“www.suibian.com””改成网站名字
最后把windows->system32->drivers->etc->host 文件中增加
127.0.0.1 www.suibian.com
访问的时候 www.suibian.com:80
网站默认为80 当然也可以在server.xml的<connector>中修改端口号
第一个web项目
配置
勾选
浏览器能不能访问到,取决于web-inf中的web.xml文件中
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
是访问次序
这个web-inf中的文件 只能通过请求转发才能访问 重定向不能访问到
servlet和jsp是可以互相转化的 将tomcat的lib里的servlet-api.jar的包 放进项目中(右键build path
或者右键 build path libaries 中的addlibary-> server runtime
jsp本身就是servlet的一个子类
1) <% String name="";
init();
%> //这里面写一般的java语句 局部变量,java一定要写在这里面
2) <%!
%>//全局变量
3) <%=
%>//相当于out.print("")
回车 必须用html代码<br/>
指令 page指令 就比如这些
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> import 是指导入的包
注释
html注释<!-- -->
java注释//
jsp注释<%-- --%>
jsp内置对象(不需要new 也可以用)九大内置对象
1)out 输出对象
2)pageContext jsp页面容器 也叫page对象
3)request 存储客户端向服务端发送的信息
常见方法: String setParameter(String name)根据请求的字段名返回字段值 比如 性别:返回女 年龄返回18
String[] setParameterValues(String name) 同上 返回多个值
void setCharacterEncoding("编码格式")
getRequestDispatcher("xx.jsp").forward(request,response) 请求转发
getServerContext() 获取项目的servercontext对象
request.setCharacterEncoding("utf-8"); post方式修改编码
4)response 响应 服务端响应客户端
void addCookie(Cookie cookie) 服务端向客户端增加Cookie对象
void sendRedirect(String location) 页面跳转 重定向
重定向和请求转发的区别
请求转发不改变地址栏 重定向会改变
请求转发会保留第一次请求时候的数据 重定向不保留
请求转发向服务端发一次请求 重定向2次请求2次跳转
请求转发是在服务端发生跳转 重定向是客户端发出的第二次
void setContentType(String type)设置服务器响应的编码
5)session 服务端 会话 在同一个客户请求时共享
cookie 它不是内置对象 (需要new 他是客户端对象 却是由服务端产生,能提高访问效率
它的:public Cookie(String name ,String value)
String getName() 获取name
String getValue() 获取value
void set MaxAge(int expiry)设置最大生命周期
服务端准备Cookie response.addCookie(Cookie cooie)
客户端获取(转发重定向都行) request.getCookie()
过程:new一个cookie 服务端得到cookie 重定向/请求转发到新页面,定义一个全局变量 就是你想保存的内容,通过客户端获取cookie数组 最后循环判断 如果name相同 获取value值
session就是会话 一个session对象自带sessionID,当第一次请求时,服务器的sessionid 复制一份 放进JSESSIONID 这个就放进了cookie里,cookie会发送给客户端,这样一个cookie对应了那个sessionid相对应 就不会乱 一一对应。
也就是说 哪怕我服务端不去addCookie 只要客户端第一次请求 都会创建一个JSESSIONID
方法 String getId() 获取sessionid
boolean isNew() 判断是否为第一次访问
void invaildate()注销,session失效
void setManInativeInterval()设置最大有效非活动时间
int getMaxInactiveInteral()获取最大有效非活动时间
session和cookie相比 session更加安全 session的value值是Object cookie是string
6)appliation 全局对象
String getContextPath() 当前项目虚拟路径
String getRealPath() 绝对路径
7)config 配置对象
8)page 当前页面对象
9)exception 异常对象
其中 四大范围对象分别是
pageContext 页面有效 也就是不在这个页面了 请求转发后就没了
request 一次请求有效 也就是请求转发可以 重定向不行
session 一次会话有效,只有别关浏览器
appliation 整个项目都有效 (只对当前项目有效
(从小到大
都有这几个方法:
void setAttribute(String name,Object obj) 设置属性值 新增/修改 void setAttribute(String a,Object b)a的值改为b
Object getAttribute(String name)根据属性名获取属性值
void removeAttribute(String name)删除对象 这个name就是属性名