一.Java Servlet :
是运行在 Web 服务器或应用服务器上的java程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
可以接收请求返回响应
Servlet的访问路径和包地址无关,只与注解url配置时的/代表的就是项目的根目录
通过jsp访问servlet:
(1)Jsp与servlet同一个包: 直接访问
(2)1.Jsp与servlet不同包,但是jsp在上层:如: 直接根目录加上“servlet包名“/”servlet名“
2.Jsp与servlet不同包,jsp在下层:“..“/“servlet包名“/“servlet名“
反向访问类似。
二.JSP:
JSP全称Java Server Pages,HTML+CSS+是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头 以%>结束。
JSP本质上是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
三.参数传递的三种方式:
1.URL传参: eg. <a href="RegServlet?name=admin&pwd=123">访问regServlet</a>
2.表单传参:
表单中实现参数的传递:
表单元素name对应参数名
表单中输入的值对应参数值
Request.getParamerter("c")
3.隐藏域实现传参(属于表单元素):
<input type="hidden" name="hide" value="testHide"/>
doGet----处理get类型的
4.get和post对于请求信息的封装是有差别的
1.安全性:
doGet的信息在地址栏
信息位置:
Get: URL;
Post: request对象;
2.提交内容大小
Get内容少
Post内容多
3.编码问题处理
Post:设定请求对象的编码
Get:URL,设定请求编码不起作用,需要手动设置编码
// Form表单中:action=”post(或者get)?传参”
Get不能传
Post是可以传的
5.解决中文乱码的三种方式:
1.设定请求和响应对象编码(只针对doPost 方法有效,因为doGet方法的信息不在request中)
(1) response.setContentType("text/html;charset=utf-8");
(2) request.setCharacterEncoding("UTF-8");
2.手动强制转码(针对doGet)
String name=new String(userName.getBytes("ISO-8859-1"),"utf-8");
3.修改tomcat中url的编码(针对doGet 一劳永逸的办法)
6.响应 (流的概念):
7.重定向与请求转发
重定向:客户端浏览器发出了两次请求(第二次请求得不到第一次请求中的数据了)
response.sendRedirect("response.jsp");
请求转发:地址栏没有发生变化,客户端浏览器只发出了一次请求
request.getRequestDispatcher("response.jsp").forward(request, response);
8.request作用域(信息共享区域)
(针对请求转发有效)
Request.setAttribute(”name”,”content”):放入request到信息共享区域(键值对)
Request.getAttribute(“name”):从信息共享区域取request
原因:
重定向:两个请求,放的信息共享区域 !=取的信息共享区域
请求转发:一个请求,放的信息共享区域==取的信息共享区域
9.会话技术:session,cookie
1.Session:位于服务器端的信息共享区域,跨多次请求的信息共享。
2.常见使用:
Jsp会自动创建session对象;
Servlet不会自动创建session,通过getSession() 来创建session对象
SessionServlet里面获得session:
HttpSession session=request.getSession();
Session.setAttribute(“name”,”my name is Leon.”);
Jsp访问session:
<%String name= session.getAttribute(“name”);
Out.print(name); -------------------因为在jsp中,所以没有system
%>
3.Session的常见API:
(1)获得session:
HttpSession session =request.getSession();//获得会话对象,如果没有,创建后返回;
Session=request.getSession(true);
//如果是true:getSession() 会获得会话; /如果是false:获得当前会话,如果没有返回Null
(2)获得sessionId:
System.out.println(session.getId());
(3)获得会话时间相隔的方法:
System.out.println(session.getCreationTime());//创建会话的时间
System.out.println(session.getLastAccessedTime());//最后一次得到这个会话后过了多少时间
Session.setMaxInactiveInterval(10);//设置session的存活时间为10S
System.out.println(session.getMaxInactiveInterval());//session的存活期
(4)Session的注销:
Session.invalidate();
//session 在web.xml中设置会话时间
//<session-config>
//<session-timout></session-timeout>
//</session-config>