Servlet
1.通常说说的servlet是HttpServlet对象,声明servlet对象,需要继承HttpServlet,继承后,可重新类中方法对http请求进行处理
void init()
void doGet(HttpServletRequest request,HttpServletResponse response)
void doPost(HttpServletRequest request,HttpServletResponse response)
void doPut(HttpServletRequest request,HttpServletResponse response)
void doDelete(HttpServletRequest request,HttpServletResponse response)
void destory()
2.在写好servlet后,还需在web.xml中进行相关的配置
<servlet>
<servlet-name>SimpleServlet</servlet-name> //可以自定义名称
<servlet-class>com.lyq.SimpleServlet</servlet-class>//servlet的完整位置 对应的类
</servlet>
<servlet-mapping> //servlet映射
<servlet-name>SimpleServlet</servlet-name> //该值应该与上面的servlet中的servlet-name一致。
<url-pattern></url-pattern>//访问的URL
</servlet-mapping>
过滤器
1过滤器应该继承Filter接口
vodi init(FilterConfig filterconfig)
void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
void destroy()
2过滤器写完,也要跟servlet一样,在web.xml中写入相关配置
<filter>
<filter-name>MyFilter</filter-name> //过滤器名称
<filter-class>com.lyq.MyFilter</filter-class> //过滤器完整类名
<init-param> //设置初始化参数
<param-name></param-name> //参数名
<param-value></param-value> //参数值
</init-param>
</filter>
<filter-mapping> //过滤器映射
<filter-name>MyFilter</filter-name> //过滤器名称 应该与filter中的名称一致
<url-pattern>/MyFilter</url-pattern> //URL映射
</filter-mapping>
3过滤器应用-java中的中文乱码问题
在java中由于web容器是采用ISO-8859-1 的编码格式,因此在web应用的业务处理也会使用ISO-8859-1的编码格式。虽然浏览器提交的请求是UTF-8,但经过业务处理中的ISO-8859-1编码,还是会出现中文乱码现象,而使用过滤器就能解决该问题。
(1)使用spring中的字符过滤器类 只需在web.xml中配置
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value> //forceEncoding=true是意思是指无论客户端请求是否包含了编码,都用过滤器里的编码来解析请求
</init-param>
</filter>
<!-- encoding filter for jsp page -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(2)自己实现过滤器
public class CHaractorFilter implements Filter{
String encoding=null;
@Override
public void destory(){
encoding=null;
}
@Override
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletExcepton{
if(encoding!=null){
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
}
chain.doFfilter(request,response); //传递给下一个过滤器
}
@Override
public void init(FilterConfig filterConfig) throws ServletException{
encoding=filterConfig,getInitParameter("encoding"); //获取初始化参数
}
}
配置web.xml
<filter>
<filter-name>CHaractorFilter </filter-name>
<filter-class>com.lyq.CHaractorFilter </filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CHaractorFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>