web入门-Servlet与过滤器

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> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值