web入门-Servlet与过滤器

本文介绍了Servlet和过滤器在Web开发中的基本概念和使用。Servlet是HttpServlet对象,通过继承并覆盖相关方法处理HTTP请求。在web.xml中配置Servlet映射以响应特定URL。过滤器则需要实现Filter接口,通过doFilter方法拦截请求,解决如中文乱码等问题。文中还给出了Spring的CharacterEncodingFilter和自定义过滤器CHaractorFilter的配置与实现方式。

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> 

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)数学优化概率(MOP)动态控制搜索过程,在全局探索局部开发之间实现平衡。文章详细解析了算法的初始化、勘探开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化并行计算等改进策略。; 适合人群:具备一定Python编程基础优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOAMOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值