Servlet:
Servlet是运行在Web服务器上的Java小程序,也是一个普通java类
作用:
接受页面提交数据
跳转页面
实现方式:
实现servlet接口
继承genericServlet类
继承HttpServlet类
Eg:
publicclass TestServlet extends GenericServlet {
@Override
publicvoid service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
PrintWriter pw = arg1.getWriter();
pw.print("myGenericServlet");
pw.flush();
pw.close();
}
}
publicclass LoginServlet extends HttpServlet{
@Override
protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet");
req.setCharacterEncoding("UTF-8");
String uname = req.getParameter("uname");//获取页面提交数据
String upass = req.getParameter("upass");//获取页面提交数据
uname = new String(uname.getBytes("iso-8859-1"),"UTF-8");
System.out.println(uname+":"+upass);
}
@Override
protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doPost");
req.setCharacterEncoding("UTF-8");
String uname = req.getParameter("uname");//获取页面提交数据
String upass = req.getParameter("upass");//获取页面提交数据
System.out.println(uname+":"+upass);
}
}
Web.xml配置:
<servlet>
<servlet-name>testServlet</servlet-name><!-- 自定义名称 -->
<servlet-class>com.etc.web.TestServlet</servlet-class><!-- servlet类完整路径 -->
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name><!-- 使用servlet中自定义名称 -->
<url-pattern>/testservlet</url-pattern><!-- 自定义url在form表单中的action属性 -->
</servlet-mapping>
<servlet>
<servlet-name>loginservlet</servlet-name>
<servlet-class>com.etc.web.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginservlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
页面提交方式:
Method=“get”对应执行doGet方法
或者Method=“post”对应执行doPost方法
超链接执行doGet方法。
req.getRequestDispatcher("/pages/success.jsp").forward(req,resp);//转发 只有一个Request对象
“/”代表:http://localhost:8081/工程名 访问工程的根路径
Web.Xml <url-pattern>/</url-pattern>:“/”表示工程的访问路径
resp.sendRedirect("/pages/success.jsp");//重定向 两个Request对象
“/”pages:代表是应用服务器根目录
<form action="/login"method="get">
:表示应用根目录下http://localhost:8081/
req.getRequestDispatcher("/pages/success.jsp").forward(req, resp);//转发 只有一个Request对象只能在同工程中转发 URL地址不会改变
// resp.sendRedirect("/test20130922servlet/login.jsp");//重定向两个Request对象可以重定向到其他的工程 URL地址会改变
Servlet:生命周期:
初始化 init()
执行 service():根据提交方式来确定调用 doget 或者dopost方法
消亡 destroy()
<servlet>
<servlet-name>loginservlet</servlet-name>
<servlet-class>com.etc.web.LoginServlet</servlet-class>
<load-on-startup>1</load-on-startup><!-- 应用服务器启动时初始化此servlet -->
</servlet>
<servlet-mapping>
<servlet-name>loginservlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
Servlet初始化变量
Web.xml
<servlet>
<servlet-name>loginservlet</servlet-name>
<servlet-class>com.etc.web.LoginServlet</servlet-class>
<init-param>
<param-name>money</param-name>
<param-value>200000</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- 应用服务器启动时初始化此servlet -->
</servlet>
Servlet类:
获取servlet初始化参数:
System.out.println("我初始化的人民币:"+this.getInitParameter("money"));
System.out.println("我初始化的人民币:"+this.getServletConfig().getInitParameter("money"));
作用域:
ServletContext:全局:一个应用只有一个ServletContext对象
HttpSession:一次会话有HttpSession对象
HttpServletRequest:一次请求有HttpServletRequest对象