Servlet:
Servlet类必须继承httpServlet。
用html协议访问Servlet:
1.在Servlet里面设置好response.setContentType(CONTENT_TYPE);
CONTENT_TYPE = text/html;charset = utf-8”;
2.在WEB-INF里面设置好xml的Servlet-name以及Servlet-mapping(似乎在tomcat8里面能够使用注解来代替xml)
使用post访问:
需要写一个包含post请求的form网页
-->
Request:
包含对Servlet请求的所有信息,主要用于接受客户端通过HTTP协议传给服务器的数据:包括请求的来源、cookies和请求相关的参数等
通过request可以查看请求参数的配置情况-->调用getParameter
request对象方法分为两大类:
1.request特性信息——只能读取,不能修改:客户端信息、HTML头信息、服务器端信息
2.request携带信息——可以进行写入和读出:
客户端上传信息(主要是From表单的信息和URL的query传递的信息)
请求的属性(由开发者自定的用于将需要的信息传递给其他的Servlet和JSP)
持久对象信息(客户端持久对象Cookies和服务器端Session)
request.getParameter(value)能够得到name为value的值的值有多个值的话就应该使用getParameterValues(String name),返回一个String的数组
当不知道上传信息变量名的时候用getParameterNames,其返回值的是一个Enumeration
Response:定义头文件信息,用于定义HTML的头/状态信息,包括字符编码格式、cookies/页面跳转的方法
JSP(Java Server Pages):
不算是一种特殊的技术,更像是一种特殊的书写形式,目的是为了简化Servlet的书写,其最后终究还是自动编译成Servlet进行运行,所以其运行效率明显高于PHP和ASP。
request可以携带完整的对象,将其传递到另一个JSP或Servlet中-->使用get/setAttribute即可。
介绍一种jsp语法推荐的获取参数的方式:
通过useBean方式获取:
id是request中对象的调用名,同时也是整个页面中调用这个对象的调用名。
scope说明调用的形式,共4种(他们的作用范围?)。
class说明我们希望从request中取出的对象的类型。
Servlet:out.println(“
JSP:
<%@page contentType=”text/html;charset=utf-8”%>
<%=”Hello World!”%> == <%out.println(“Hello World!”)%>
MVC的三层设计模式:JSP-Servlet-Bean
在Serlvet中不要包含任何的逻辑处理程序,也不要将页面在Serlvet中直接输出,因此处理相关数据用其他类,输出采用JSP。
Send只能传简单的信息:response.sendRedirect(“showdirect.jsp?username = odin)<自动通过URL进行跳转,和HTML的跳转功能是一样的>
Despatch(常用,能够传递较为复杂的信息):
1.必须使用完全的相对地址,而不是从Servlet的目录开始写,String servletURL是跳转目标的根路径。
2.跳转命令要包含Servlet的request和respose。
代码:
RequestDespatcher rd = getServletContext().getRequestDespatcher(“/showattribute.jsp”);
rd.forward(request,response);
持久对象
Session:放在服务器,储存的是对象
String userName = “demaxiya”;
//生成新的Session对象
HttpSession userinfo = request.getSession(true);
userInfo.setAttribute(“userName”,userName);
response.sendRedirect(“showattribute.jsp”);
使用java的方式获取:
HttpSession userInfo = request.getAttribute(false);userinfo.getAttribute(“username”);
Cookie: 放在客户端,只能存放String,存在时间由程序定义,而不是服务器定义。
相比于Session的优点:
1.存在时间长,关闭浏览器甚至电脑后依然有效,而Session当关闭浏览器后就失效了。
2.Cookie不占用浏览器的资源,不会给服务器造成压力。
3.Cookie能够被JavaScript等页面语言所使用,而Session不行。
Cookie的生成:
1.new Cookis(name,value)
2.response.setCookie(cookie)
Cookie 的获取:request.getCookies() <返回一个Cookie的数组>
综合运用
JSP中导入另一个JSP
<%@ include file=”data.jsp”%>
文件上传
上传文件使用的是标准的HTML方式: