/*
servlet使用:
1.编写java类,继承HttpServlet方法
2.重写方法
3.把编译好的class文件放置WEB-INF/classes
4.配置web.xml
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>helloServelet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HELLO</url-pattern> <!-- 访问网页用的后缀 -->
</servlet-mapping>
5.访问网页
http://www.baidu.com/HELLO
*/
/*
servlet的生命周期:
1.客户端访问http://www.baidu.com/HELLO
2.截取/HELLO去web.xml中找对应servlet的class
3.通过构造方法构造对应的servlet对象
4.创建servletConfig对象
5.调用 public void init(ServletConfig config)
6.调用 public void service(ServletRequest req,ServletResponse res),service中会调用doGet,doPost等
7.调用 public void destroy()
*/
// servletConfig************************************************************************************************
//servlet的servletConfig对象,servlet对象自带一个servletConfig对象,由init的时候赋值
private ServletConfig config;
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
//获取servletConfig对象
servletConfig config = this.getServletConfig();
//每个servlet对象都会有一个servletConfig对象,存在web.xml中
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>helloServelet</servlet-class>
//这里的参数都是系统在创建servletConfig对象时自动添加的
<init-param>
<param-name>path</param-name>
<param-value>e:/b.txt</param-value>
</init-param>
</servlet>
//servletConfig的API
String str = config.getInitParameter("path");
Enumeration e = getInitParameterNames(); //e是一个迭代器,可以遍历
ServletContext context = getServletContext();
String name = config.getServletName(); //获取servlet的名字
//servletContext ************************************************************************************************
/*
servletContext和servletConfig的区别
1.config 一个servlet一个,不同servlet不同
2.context 一个web应用一个, 所有servlet相同
*/
//servletContext文件在哪里
<web-app>
<context-param>
<param-name>aaa</param-name>
<param-value>123</param-value>
</context-param>
<web-app>
//得到servletContext
ServletContext context = config.getServletContext();
this.getServletContext() //直接得到
//得到当前web路径
String path = context.getContextPath();
//得到web应用的初始化参数
String p = context.getInitParameter("aaa")
Enumeration e = context.getInitParameterNames();
//作为域对象
context.setAttribute("User",new Object());
Obeject user = context.getAttribute("User");
context.removeAttribute("User");
//转发
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/hello");
dispatcher.forward(request,response);
//得到完整路径
String path = context.getRealPath(); // D:\tomcat\webapps\hello\
//requst和response ************************************************************************************************
//requst
//请求行
String m = request.getMethod();
String u = request.getRequestURI/getRequestURL()
String p = request.getProtocol();
//请求头
String n = request.getHeader("host");
Enumeration e = request.getHeaderNames();
//获取表单参数
String account = request.getParameter("Account");
Enumeration e = request.getParameterNames();
String[] v = request.getParameterValues("Hobit");
//地址
String request.getContextPath();
//转发
RequestDispatcher dispatcher = request.getRequestDispatcher("/hello");
dispatcher.forward(request,response);
//域对象
同context
//respose
//响应行
response.setStatus(404);
//响应头
response.setHeader("name","cz");
//响应体写入
PrintWriter writer = (PrintWriter) response.getWriter() //字符流
OutputStream writer =(OutputStream)response.getOutputStream() //字节流
writer.write(str);
//会话 ************************************************************************************************
//cookie,存于浏览器中,大小限制,个数限制,非中文字符串
//创建cookie
Cookie cookie = new Cookie("name","value");
//设置cookie路径,默认web应用根目录下,设置路径的目的是为了多个应用共享cookie
cookie.setPath("/") //那么在这个服务器上的所有web应用都能用传回来的cookie了
//设置cookie有效时间
cookie.setMaxAge(20) //20sec,-1表示存在内存中,0表示删除cookie
//设置cookie的值
cookie.setValue("passw");
//封装cookie
response.setHearder("set-cookie","name=cz,mail=951368548@qq.com");//方法一
response.addCookie(cookie); //方法二
//得到cookie对象
Cookies[] cookies = request.getCookies();
String cookie = request.getHeader("cookie");
//cookie对象方法
String name = cookie.getName();
String value = cookie.getValue();
//session,存于服务器内存中
/*
session 原理:核心代码 HttpSession session = request.getSession();
1.如果一个浏览器第一次访问服务器,服务器就第一次为该次会话执行该代码
服务器会做如下动作:
Cookie cookie = new Cookie("JSESSIONID",sessionID);
response.addCookie(cookie);
就为该次会话绑定了一个JSESSIONID,只要浏览器能正确request该ID,就能访问
该session域中的对象;
2.如果不是第一次访问服务器,该代码就会根据request中的JSESSIONIN映射到相应的
HttpSession对象,就能操作该域中的对象了
*/
//创建或者获取session对象
HttpSession session = request.getSession();
HttpSession session = request.getSession(false); //如果没有session对象就不创建
//设置时间和销毁session对象
session.setMaxInactiveInterval(20); //20s,系统默认30分分钟,可以在web.xml中设置
session.invalidate();
//得到session编号
String session.getId(); //非JSESSIONID,是sessionId
//保存数据
session.setAttribute("name", new Object());
//获取数据
Object user = session.getAttribute("name");
//清楚数据
session.removeAttribute("name");
网友评论