作业2-5问题 ,关于页面乱码及进入不了过滤器
问题1:为什么我加了字符集转换的过滤器以后,页面显示乱码,不加的话就正常显示中文
页面:
web.xml
1 | <? xml version = "1.0" encoding = "UTF-8" ?>< br >< web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "WebApp_ID" version = "3.1" >< br > < display-name >listener</ display-name >< br > < welcome-file-list >< br > < welcome-file >index.html</ welcome-file >< br > < welcome-file >index.htm</ welcome-file >< br > < welcome-file >index.jsp</ welcome-file >< br > < welcome-file >default.html</ welcome-file >< br > < welcome-file >default.htm</ welcome-file >< br > < welcome-file >default.jsp</ welcome-file >< br > </ welcome-file-list >< br > < br > < listener >< br > < listener-class >com.imooc.listener.WebListener</ listener-class >< br > </ listener >< br > < br > < listener >< br > < listener-class >com.imooc.listener.WebAttributeListener</ listener-class >< br > </ listener >< br > < br > < servlet >< br > < servlet-name >login</ servlet-name >< br > < servlet-class >com.imooc.servlet.LoginServlet</ servlet-class >< br > </ servlet >< br > < br > < servlet-mapping >< br > < servlet-name >login</ servlet-name >< br > < url-pattern >/login</ url-pattern >< br > </ servlet-mapping >< br > < br > < filter >< br > < filter-name >charsetFilter</ filter-name >< br > < filter-class >com.imooc.filter.CharsetFilter</ filter-class >< br > < init-param >< br > < param-name >charset</ param-name >< br > < param-value >UTF-8</ param-value >< br > </ init-param >< br > </ filter >< br > < filter-mapping >< br > < filter-name >charsetFilter</ filter-name >< br > < url-pattern >/*</ url-pattern >< br > </ filter-mapping >< br > < br > < filter >< br > < filter-name >loginFilter</ filter-name >< br > < filter-class >com.imooc.filter.LoginFilter</ filter-class >< br > </ filter >< br > < filter-mapping >< br > < filter-name >loginFilter</ filter-name >< br > < url-pattern >/listener/index.html</ url-pattern >< br > </ filter-mapping >< br > < br ></ web-app >< br > |
CharsetFilter
1 | ppackage com.imooc.filter;<br><br> import java.io.IOException;<br><br> import javax.servlet.Filter;<br> import javax.servlet.FilterChain;<br> import javax.servlet.FilterConfig;<br> import javax.servlet.ServletException;<br> import javax.servlet.ServletRequest;<br> import javax.servlet.ServletResponse;<br> import javax.servlet.http.HttpServletRequest;<br> import javax.servlet.http.HttpServletResponse;<br><br> public class CharsetFilter implements Filter{<br><br> private String charset;<br><br> @Override <br> public void destroy() {<br> // TODO Auto-generated method stub<br><br> }<br><br> @Override<br> public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)<br> throws IOException, ServletException {<br> HttpServletRequest req = (HttpServletRequest)request;<br> HttpServletResponse resp = (HttpServletResponse)response;<br> req.setCharacterEncoding(charset);<br> resp.setContentType("text/html;charset="+charset);<br> chain.doFilter(request, response);<br><br> }<br><br> @Override<br> public void init(FilterConfig filterConfig) throws ServletException {<br> charset = filterConfig.getInitParameter("charset");<br><br> }<br><br>}<br> |
问题2:当我直接访问index.html的时候,进入不了loginFilter这个过滤器,这个是为什么
LoginFilter:
1 | package com.imooc.filter;<br><br> import java.io.IOException;<br><br> import javax.servlet.Filter;<br> import javax.servlet.FilterChain;<br> import javax.servlet.FilterConfig;<br> import javax.servlet.ServletException;<br> import javax.servlet.ServletRequest;<br> import javax.servlet.ServletResponse;<br> import javax.servlet.http.HttpServletRequest;<br> import javax.servlet.http.HttpServletResponse;<br><br> public class LoginFilter implements Filter{<br><br> @Override <br> public void destroy() {<br> // TODO Auto-generated method stub<br><br> }<br><br> @Override<br> public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)<br> throws IOException, ServletException {<br> HttpServletRequest req = (HttpServletRequest)request;<br> HttpServletResponse resp = (HttpServletResponse)response;<br> System.out.println("==="+req.getRequestURI());<br> if(req.getSession().getAttribute("userName")!=null) {<br> chain.doFilter(request, response);<br> }else {<br> resp.sendRedirect("/listener/login.html");<br> }<br><br> }<br><br> @Override<br> public void init(FilterConfig filterConfig) throws ServletException {<br> // TODO Auto-generated method stub<br><br> }<br><br>}<br> |
22
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小脸
2021-05-29 13:43:45
同学你好,
1、这里应该是编码格式的问题,猜测不乱码时编码格式为GBK,所以当设置字符集转换的过滤器以后(UTF-8)就会产生乱码
2、这里同学可以参考其他同学的思路检查一下自己的判断是否有问题:
https://class.imooc.com/course/qadetail/281374
祝学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9404 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧