tomcat部署servlet目录结构
webapps---->project---->WEB-INF---->classes
|
->lib
|->web.xml(servlet的部署描述文件)
package com.bluedot;
import ......
public class AA extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException ,IOException{
PrintWriter pw = response.getWriter();
pw.println("
应
5.给客户端的响应中添加附加信息。
获取表单当中的数据方法:
String str = request.getParameter("key");
String[] arrr = request.getParameterValues("key");
request.setCharacterEncoding("utf-8");设置请求中的字符编码
String str = new String(color.getBytes(),"utf-8");设置编码的另一种方式
request.setCharacterEncoding("utf-8");通过request对象对请求中的表单数据设置字符编码
在相应中设置编码:
response.setContentType("text/html;charset=utf-8");告知浏览器用UTF-8的编码方式查看相应结果
解决tomcat针对get请求含有中文时出现乱码现象。在tomcat的conf目录下的server.xml Connector的节点中添加URIEncoding="utf-8"
在servlet中获取浏览器的附加信息
String value = request.getHeader("key");
Enumeration enum = request.getHeaderNames();
作业一:
编写一个servlet获取客户端浏览器的型号,如果是IE 显示“你好微软” 如果是 火狐 显示“你好火狐”除此以外其他的浏览器则显示
“我不认识你”
作业二:
编写一个servlet获取客户端浏览器所支持的语言。如果是中文显示“你好,聪明的中国人”,如果是英文 显示“你好,美国佬”如果是
日文显示“XXXXXXX”
作业三:
编写一个servlet做服务端的计数。要求线程安全的。
客户端浏览器的请求方式:
1.字符请求
2.字节请求
String majorVer = sc.getMajorVersion();
获得servelt的副版本号:
String minorVer = sc.getMinorVersion();
3.全局容器:
ServletContext sc = getServletContext();
sc.setAttribute("key",value)
Object obj = sc.getAttribute("key");
这个对象用于获取web.xml文件当中的配置信息
ServletConfig conf = getServletConfig();
String value = conf.getInitParameter(key);
让一个servlet自启动
ServletContext生命周期:
ServletContext的生命周期是最长的一个对象,容器启动时就会创建这个对象,容器关闭时会销毁这个对象。
作业1:
把昨天的作业改成相对路径去做。
作业2:
编写一个自启动的servlet,重新init方法。在该方法通过读properties文件获取配置信息。(配置信息内容:文件上传路径,数据库用户名,数据库密码)
Cookie和Session
HTTP协议的特点:无状态,单向性
如何获得到一个Cookie对象:
Key和Value只能是英文和数字
Cookie c = new Cookie("key","value");
当客户端请求服务端资源时,客户端会把服务端曾经写给他的所有的Cookies对象一并的拿过来。服务端如何获取客户端
提交过来的所以的Cookie对象呢?
Cookie[] cookies = request.getCookies();
服务端一共能给同一个客户端最多30个(20个)
Cookie对象的种类:
1.状态Cookie(客户端会把服务端写给我Cookie对象放到内存当中存放,如果关闭浏览器,那这个Cookie对象随之销毁。)
2.持久化Cookie(客户端会把这个Cookie对象保存到客户端磁盘的文件当中。);
如何创建一个持久化Cookie
Cookie c = new Cookie("key","value");
c.setMaxAge(秒);
c.setMaxAge(60*60*24*365);
Session的使用
会话
HttpSession session = request.getSession(不填|true|false);
session.setAttribute("key",Object value);
Object obj = session.getAttribute("key");
Session的结构
1.类似于map的数据结构
2.生命周期(可变的 是有程序员自己来控制)
Servlet优缺点:
1 优点:
就是java类。编写代码时容易
调试比较容易。debug
2 缺点:
给客户端的响应是html字符串的时候特别麻烦。需要在out.println("
WEB-INF/classes)
3.容器编译JSP的源文件到Servlet class类:有第一个请求访问JSP的时候,容器编译。如果部署到容器中的JSP源文件被修改了,容器会重新的编译JSP到Servlet
4.JSP---Servlet,类名:文件名_jsp.java
5.JSP中的HTML的代码后被JSP引擎放入到Servlet的out.write()函数中。
在JSP中的嵌入Java代码必须放在指定的标记中。
1.JSP的三种原始标签
2.JSP的指令标签
3.JSP的动作标签
4.在JSP2.0规范后,提出EL表达式
5.自定以的标签(JSTL标签库,struts标签库,分页标签库)
JSP中原始的三种标签
<%! %>------声明标签,声明变量和函数(声明的变量是成员变量,函数是和_jspService并列的函数体)
<% %>------脚本标签 编译在_jspService函数体的内部
<%=Java表达式 %>------赋值标签 out.println(add(3,4));
作业1:
编写一个jsp页面,当访问这个页面时以20%概率显示你中奖了。
作业2:
把改变背景颜色的作业,用jsp完成
jsp的指令标签
page include
指令标签的格式:
<%@ 标签名 属性=值 属性=值 。。。。。。。%>
import属性的写法有两种:
1: <%@ page import="java.util.*,com.bluedot.ConfigInfo,........"%>
2: <%@ page import="java.util.*"%>
<%@ page import="com.bluedot.ConfigInfo"%>