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() {
// 对象消除时自动使用
}
}