Servlet
1- servlet类继承自HttpServlet父类, 父类地址为javax.servlet.http.httpServlet
2- 该类的对象由Web服务器创建,并调用方法. 调用方法时传参分别为:
HttpServletRequest 和HttpServletResponse
与HttpServlet类同包
3- 其中的方法主要是对request对象和response对象的操作,具体如下:
package servlet;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ServletTest extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// servlet中方法练习
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
req.setAttribute("key", "value");
req.getRequestDispatcher("url").forward(req , resp);
resp.sendRedirect("url");
HttpSession session = req.getSession();
ServletContext application = session.getServletContext();
}
}
Filter
1- 过滤功能,对访问某目标目录的所有访问进行检查
2- 实现了Filter接口,接口包为: javax.servlet.Filter
3- 该类的对象由Web服务器创建,并调用方法. 调用方法时传参分别为:
ServletRequest ,ServletResponse 和FilterChain
与Filter类同包
4- 检索代码在doFilter方法中实现,;
5- 过滤通过用FilterChain类型对象的方法doFilter()进入访问对象;
6- Tomcat调用Filter类, 使用时最先加载类中的init方法,再加载doFilter方法;
package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class FilterPractice implements Filter{ private String code; public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 过滤代码 res.setCharacterEncoding(code);//设定字符集 HttpServletRequest request = (HttpServletRequest)req;//转为子类对象 HttpServletResponse response = (HttpServletResponse)res;//转为子类对象 HttpSession session = request.getSession();//只有子类对象能够创建session ServletContext application = session.getServletContext();//创建application chain.doFilter(request, response);//过滤通过后,通行操作,将request和response传递到用户访问地址. } public void init(FilterConfig fcg) throws ServletException { // TODO Auto-generated method stub code = fcg.getInitParameter("code"); /** * 此处是读取XML文件中的初始化属性语句,需要在XML中有相应的语句,本例中对应的XML语句为: * <filter> * <filter-name>encode</filter-name> <filter-class>com.kero99.wp.filter.EncodingFilter</filter-class> <init-param> <param-name>code</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encode</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> */ } public void destroy() { // 对象消除时自动使用 } }