【Java】Servlet
介绍Servlet是运行在服务器端的程序,用于处理和响应客户端的请求,生成动态Web内容JSP的本质是Servlet,当把JSP页面部署到Web容器之后,Web会把JSP编译成对应的Servlet类和方法HttpServletRequest用来包装客户端提交的数据:IP地址、表单数据、Cookie信息HttpServletResponse用来包装向客户端写出的数据(也可以输
介绍
Servlet是运行在服务器端的程序,用于处理和响应客户端的请求,生成动态Web内容
JSP的本质是Servlet,当把JSP页面部署到Web容器之后,Web会把JSP编译成对应的Servlet
类和方法
HttpServletRequest用来包装客户端提交的数据:IP地址、表单数据、Cookie信息
HttpServletResponse用来包装向客户端写出的数据(也可以输出图片)
对应于http协议的7中请求,HttpServlet的请求处理方法相应有:
1. doGet ; 2. doPost; (常用)
3. doPut ; 4. doDelete;
5. doHead;6. doOptions;7. doTrace;
HTML code
<form action="exam/loginServlet" method="post">
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
web.xml code
<servlet>
<servlet-name>MY SERVLET</servlet-name>
<servlet-class>LOGIN SERVLET</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MY SERVLET</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
servlet code
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
//向控制台输出
System.out.println("username=" + username);
System.out.println("password=" + password);
//向客户端输出
response.setContentType("text/html;charset=GB18030");
response.getWriter().println("Login Success!!!");
response.getWriter().println("登录成功!!!");
}
生命周期 & 单实例多线程
- 加载实例化Servlet
- 执行初始化方法init
- 处理请求
- 退出服务 destroy()
实例化和初始化只执行一次,同时Servlet是单实例多线程的,所以不是线程安全,设计时不要操作成员变量,只用来处理请求
Servlet单实例,减少了生成Servlet的开销。通过线程池响应请求,避免了不断创建线程和销毁线程的开销,提高了性能。
Cookie & Session
Cookie分为两种:1.放在内存,窗口和子窗口可以使用;2.放在客户端文本,一定时间内可以使用
Ps. 一个Servlet设置的Cookie可以被同一个路径下或子路径下的Servlet读取
Session由服务器创建,放在服务器的内存中,创建SessionID放在Cookie中发送给客户端
SetCookie
Cookie c = new Cookie("client_ip", request.getRemoteAddr());
c.setMaxAge(60*60);
response.addCookie(c);
ReadCookie
Cookie[] Cookies = request.getCookies();
for (int i=0; i<Cookies.length; i++) {
Cookie c = Cookies[i];
response.getWriter().println(c.getName() + ", " + c.getValue());
}
SetSession
HttpSession session = request.getSession(true);
session.setAttribute("ip", request.getRemoteAddr());
response.getWriter().println("SetSession OK!");
ReadSession
HttpSession session = request.getSession(true);
String ip = (String)session.getAttribute("ip");
response.getWriter().println("ip=" + ip);
更多推荐
所有评论(0)