权限控制过滤器与汉字乱码过滤器相关实验

实验目的:
熟悉Servlet的定义和使用方法;熟悉Servlet中session用法和Servlet 中对页面的转发;
熟悉利用过滤器实现权限控制和汉字乱码问题。
实验任务:
具体要求:
1、设计一个权限控制过滤器和一个汉字乱码过滤器,练习二个过滤器的使用方法;
2、完成web.xml文件中相应的配置;
3、设计一个登录表单;
3、利用Servlet 验证用户名和密码的正确性,利用session会话保存登录信息;
4、用户名和密码正确,则登录成功,可以实现增加用户和新闻发布的功能。
一. 项目资源管理截图如图1.1所示:
图1.1 项目资源管理图二. 项目关键代码如下:
2.1相关jsp的主要代码:
2.1.1 index.jsp的主要代码:

<body style="background-color: #D8BFD8;">
<table >
<tr>
<td>
<a href="index.jsp"> 首页 </a><br>
<a href="login.jsp"> 后台 </a><br>
</td>
<td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img src="img/01.jpg"width="200" height="200">
</td>
</tr>
</table>
</body>

2.1.2 Login.jsp的主要代码:

<body  style="background-color: #D8BFD8;">
	<form method=post action=my>
		<div id="header">登录信息</div>
		<table align="center">
			<tr>
				<td rowspan="4"><img src="img/007.jpg" /></td>
				<td>用户名:</td>
				<td><input type="text" name="userName" id="userName"></td>
			</tr>
			<tr>
				<td>密 码:</td>
				<td><input type="password" name="userPass" id="userPass"></td>
			</tr>
			<tr>
				<td></td>
				<td align="right"><input type="submit" name="login" id="login"
					value="登 录"> <input type="reset" name="chongzhi"
					id="chongzhi" value="重 置"></td>
			</tr>
		</table>
	</form>
</body>

2.1.3 success.jsp 的主要代码:

<body  style="background-color: #D8BFD8;">
<table>
<tr>
<td>
<a href="bankgrand/success.jsp"> 首页 </a><br>
<a href="bankgrand/adduser.jsp"> 添加用户 </a><br>
<a href="bankgrand/news.jsp"> 新闻发布 </a><br>
<a href="bankgrand/quit.jsp"> 退出登录</a><br>
</td>
<td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img  src="img/02.jpg" >
</td>
</tr>
</table>
</body>


2.1.4 quit.jsp的主要代码:

<body  style="background-color: #D8BFD8;">
<%
	session.invalidate();
	response.sendRedirect("../index.jsp");
%>
</body>

2.1.5 news.jsp 的主要代码:

<body style="background-color: #D8BFD8;">
	<a href=" bankgrand/success.jsp"> 首页 </a>&nbsp;&nbsp;&nbsp;&nbsp;
	<a href=" bankgrand/quit.jsp"> 退出登录</a><br>
	 <img src="img/03.jpg">	
</body>

2.1.6 adduser.jsp 的主要代码:

<body style="background-color: #D8BFD8;">
	<a href="bankgrand/success.jsp"> 首页 </a>&nbsp;&nbsp;&nbsp;&nbsp;
	<a href="bankgrand/quit.jsp"> 退出登录</a>
	<br>
	<form id="inf">
		<table width="80%" border=0>
			<tbody>
				<tr>
						<table cellspacing=0 cellpadding=0 width="100%" border=0>
							<tbody>
								<tr>
									<td style="border-bottom: #333 1px dotted">
										<p class=name>
											<strong>请录入个人详细信息</strong>
										</p>
									</td>
								</tr>

							</tbody>
						</table>
						<table width="100%">
							<tbody>
								<tr>
									<td width="20%" align=right><span
										style="font-size: 30px; font-weight: normal; 
									color: blue">姓名:&nbsp;</span></td>
<td align=left><input style="font-size: 30px; 
color: blue"								value=<%=session.getAttribute("logininfo")%>>
</input></td>
								</tr>
								<tr>
									<td align=right>证件类型:&nbsp;</td>
									<td align=left><input class=textc style="width: 
										240px" value=身份证></td>
								</tr>
								<tr>
									<td align=right>证件号码:&nbsp;</td>
									<td  align=left><input
										 > <span style="color: red"></span></td>
								</tr>
								<tr>
									<td align=right>性别:&nbsp;</td>
									<td><input type="radio" name="gender" id="man" 
										value="男"checked></td>
									<td><input type="radio" name="gender" id="femal" 
								        value="女"></td>
</tr>
								<tr>
									<td align=right>民族:&nbsp;</td>
									<td align=left><select>
											【……】</td>
								</tr>

								<tr>
									<td align=right>出生日期:&nbsp;</td>
									<td align=left><input 
										placeholder="输入格式为yyyy-mm-dd"></td>
								</tr>
								<tr>
									<td align=right>手机:&nbsp;</td>
									<td align=left><input></td>
								<tr>
									<td align=right><div>
											<input name="submit" type="submit" value="
										确 定" />
</div></td>
								</tr>
							</tbody>
						</table>
			</tbody>
		</table>
	</form>
</body>

2.2相关java的主要代码:
2.2.1 EncodingFilter.java 的主要代码:

public class EncodingFilter implements Filter {
//汉字乱码过滤器
	private String encod=null;
	@Override
	public void destroy() {
		encod =null;
		System.out.println("filter 销毁!");
		
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		request.setCharacterEncoding(encod); 
		response.setContentType("text/html:charset="+encod);//servlet中输出汉字不乱码
		chain.doFilter(request, response);
		System.out.println("filter 相应消息");
		
	}
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		 this.encod=filterConfig.getInitParameter("encod");
		 System.out.println("filter 初始化");
		
	}
}

2.2.2 SecurityFilter.java 的主要代码:

public class SecurityFilter implements Filter {
	//权限管理的过滤器
	@Override
	public void destroy() {	 
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		 HttpServletRequest req=(HttpServletRequest) request;
		 HttpServletResponse resp=(HttpServletResponse) response;
		 HttpSession session=req.getSession();
		 if(session.getAttribute("logininfo")!=null)
		 {
			 System.out.println("可以访问");
			 chain.doFilter(request, response); //放行
		 }
		 else {
			System.out.println("不能访问");
			resp.sendRedirect("../login.jsp");
		}
	}
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {	
	}
}

2.2.3 Myseverlet.java的主要代码:

//验证用户名和密码的正确性的Servlet
public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String userName =request.getParameter("userName");
		String userPass =request.getParameter("userPass");
		if(userName.equals("吴霞")&&userPass.equals("1711411203"))
		{
			
			HttpSession hs=request.getSession(true);
			hs.setMaxInactiveInterval(20);//设置时长
			hs.setAttribute("logininfo", userName);//创建session对象
			request.getRequestDispatcher("bankgrand/success.jsp").forward(request, response);
		}	else {
			response.sendRedirect("index.jsp");
		}
	}	

2.3web.xml相关配置代码:

 <!-- 验证用户名和密码的正确性的Servlet 的配置 -->
  
  <servlet>
    <servlet-name>my</servlet-name>
    <servlet-class>ccit.wuxia.servlet.Myseverlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>my</servlet-name>
    <url-pattern>/my</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  
    <!-- 汉字乱码过滤器 -->
  
  <filter>
    <filter-name>encoding</filter-name>
    <filter-class>ccit.wuxia.filter.EncodingFilter</filter-class>
    
    <init-param>
        <param-name>encod</param-name>
        <param-value>utf-8</param-value>
    </init-param>
    
  </filter>
  
   <!-- 权限控制过滤器 -->
   
  <filter>
  <filter-name>security</filter-name>
    <filter-class>ccit.wuxia.filter.SecurityFilter</filter-class>
  </filter>
  
  <!-- filter-mapping控制执行顺序 -->
  
  <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter-mapping> 
    <filter-name>security</filter-name>
    <url-pattern>/bankgrand/*</url-pattern>
  </filter-mapping>
  

三.试验运行结果如图所示:
在这里插入图片描述
图3.1 首页界面
在这里插入图片描述
图3.2后台登录界面

在这里插入图片描述

图3.3后台管理主界面
在这里插入图片描述
图3.4添加用户界面
在这里插入图片描述
图3.5新闻发布界面

总结:我将复习过程的笔记整理成了博客,链接为: https://blog.csdn.net/qq_44825810/article/details/105517469

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

‾͟͟͞(((ꎤ✧曲✧)̂—̳͟͞加油哟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值