jspservlet入门小项目--留言管理

一,jsp,servlet基础知识

1,jsp有一些内置对象,常用的有:

out(PrintWriter),request(HttpServletRequest),response(HttpServletresponse),session(HttpSession),application(ServletContext)

注意:建议html和java代码分开。

2,<%@ include file="要包含的页面路径" %>,这种叫静态包含。
<jsp:include page="要包含的页面路径" /> ,这叫做动态包含。
静态包含:导入文件会先被编译成html文件才进行导入。(会编译成一个servlet)
动态包含:(多个servlet,运行的时候包含进来)不进行任何编译,直接将要导入的文件原样导入,然后在被导入页面进行编译。
最佳实践:开发中90%使用静态包含。因为使用动态包含效率低而且有可能会出现变量的重名。其他比如权限用动态。

3,如果希望在不同页面中传递对象,可以通过xx.setAttribute("xx",obj)完成设置,可以通过xx.getAttribute("xx",obj)来接收。
可以传递对象的内置对象有如下一些:
.pageContext(对于servlet而言没有)
当前页面存在,当发生跳转之后数据丢失。
.request(HttpServletRequest)
当前页面存在,服务器跳转存在,客户端跳转不存在
.session(HttpSession)
只有浏览器关闭session才会丢失。否则一直存在
.application(ServletContext)
只要服务器没有重启就一直存在

使用原则:
能用pageContext就不用request,能用request就不用session,能用session就不用application。

重定向response.sendRedirect,跳转之后仍会执行完剩下的代码才进行跳转。

一定注意:在response.sendRedirect后加上 return;不能通过参数传中文。

4,解决乱码问题,使用filter

 1 <filter>
 2     <filter-name>CharEncoding</filter-name>
 3      <filter-class>tk.dongyeblog.shop.filter.CharFilter</filter-class>
 4     <init-param>
 5       <param-name>encoding</param-name>
 6         <param-value>UTF-8</param-value>
 7     </init-param>
 8 </filter>
 9 <filter-mapping>
10     <filter-name>CharEncoding</filter-name>
11      <url-pattern>/*</url-pattern>
12 </filter-mapping>

定义filter实现Filter接口。通过request.setCharacterEncoding(encoding);设置编码。

1 @Override
2 public void doFilter(ServletRequest request, ServletResponse response,
3         FilterChain chain) throws IOException, ServletException {
4     request.setCharacterEncoding(encoding);
5     chain.doFilter(request, response);
6     
7 }
1 @Override
2 public void init(FilterConfig cfg) throws ServletException {
3     String e = cfg.getInitParameter("encoding");
4     if(e==null || "".equals(e)){
5         encoding = "UTF-8";
6     }else{
7         encoding = e;
8     }
9 }

通过<init-param></init-param>来设置初始化编码。

5,判断是否登录。如果未登录不让访问admin目录

web.xml配置

1  <filter>
2       <filter-name>AdminCheckFilter</filter-name>
3       <filter-class>tk.dongyeblog.shop.filter.AdminCheckFilter</filter-class>
4   </filter>
5   <filter-mapping>
6       <filter-name>AdminCheckFilter</filter-name>
7       <url-pattern>/admin/*</url-pattern>
8   </filter-mapping>
 1 @Override
 2     public void doFilter(ServletRequest request, ServletResponse response,
 3             FilterChain chain) throws IOException, ServletException {
 4         HttpServletRequest req = (HttpServletRequest)request;
 5         HttpServletResponse resp = (HttpServletResponse)response;
 6         HttpSession session = req.getSession();
 7         User u = (User)session.getAttribute("loginUser");
 8         if(u==null){
 9             resp.sendRedirect(req.getContextPath()+"/loginInput.jsp");
10         }
11         chain.doFilter(request, response);
12     }

 

 

转载于:https://www.cnblogs.com/dongye/p/3242111.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何启用SQL Server 2008的FILESTREAM特性

如何启用SQL Server 2008的FILESTREAM特性 今天安装SQL Server 2008的时候没有注意&#xff0c;忘记了启用FILESTREAM特性&#xff0c;因为默认情况下FILESTREAM是禁用的。安装完成后&#xff0c;再导入一个.bak的备份数据库时提示FILESTREAM feature is disabled&#xff0c;到…

ARM Linux.2.6.34内核移植

ARM-LINUX-GCC版本4.3.2.以安装在/usr/local/arm/4.3.2下.第一步:修改linux-2.6.34/Makefile文件,在makefile中找到以下两条信息并做修改ARCH &#xff1f; arm CROSS_COMPILE &#xff1f;/usr/local/arm/4.3.2/bin/arm-linux-第二步:修改平台输入时钟修改平台的时钟频率&…

网络开发必备的HTTP协议知识

一、什么是HTTP协议 HTTP协议是一种应用层协议&#xff0c;HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览…

SSP状态寄存器SSPSTAT

R R R R R R ─ ─ D/A P S R/W UA BF 地址&#xff1a;94h上电值&#xff1a;00h │ │ │ │ │ │ │ │ └┬┘ │ │ │ │ │ └──── 缓冲区满 …

----uni-app之解决HBuilderX安装less成功运行时提示未安装----

转载于:https://www.cnblogs.com/zjy850984598/p/11238777.html

js使浏览器窗口最大化(适用于IE的方法)

这里使用的方法是IE的私有特性&#xff0c;只能在IE中有效。主要是window.moveTo和 window.resizeTo方法。效果和点击最大化按钮差不多&#xff0c;有一点区别。点击最大化按钮后&#xff0c;浏览器的内容填充满显示器&#xff0c;浏览器窗口的边框被挤出显示器。而该js的最大化…

win7系统cocos2dx 3.4 绑定自定义类到Lua

Cocos2d-x 3.0开始使用bindings-generator来生成c类的lua绑定。bindings-generator基于tolua&#xff0c;通过配置tools/tolua中的ini文件以及运行genbindings.py就可以自动生成c类的绑定&#xff0c;具体的步骤在cocos2d-x-3.4\tools\tolua\README.mdown文件中&#xff0c;文档…

jQuery无任何标示获取td在表格中的行数和列数

当td没有任何标示时&#xff0c;在jQuery中实现获取其在表格中的行和列&#xff1a;<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w…

docker, docker-compose安装

官方文档&#xff1a; 安装docker: https://docs.docker.com/install/linux/docker-ce/centos/ 安装docker-compose: https://docs.docker.com/compose/install/ # 所有docker命令映射都是&#xff1a;local:container# create container docker run --name <name> -p 1…

Dojo实现Tabs页报错(二)

转载于:https://www.cnblogs.com/riasky/p/3481643.html

mongo DB for C#

(1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to C# 驱动 DLLs 1MongoDB.Bson.dll 2MongoDB.Driver.dll 3MongoDB.Driver.Core.dll 或者 Nuget 下载 VS 2012/13 TOOLS -> Library Package Manager –> Manage …

WinLogon事件通知包编程

2007年5月18日&#xff0c;21:18:55| yexiaozhou2003[AT]hotmail.com(cooldog)今天看到CSDN中有网友问道如何获取用户按CtrlAltDel锁定桌面的事件。回帖后大致整理了一下&#xff0c;希望对大家有帮助。 首先我们要了解一下WinLogon&#xff0c;他是负责提供给用户交互式界面的…

如何选择国外虚拟主机空间服务商

如何选择国外虚拟主机空间服务商 几经辛苦&#xff0c;终于把自己的主页给设计完成好了&#xff0c;那么下一步就是得为自己的网站在网上找一个家了。现在的互联网上的免费午餐似乎已经被大家吃过了头&#xff0c;做互联网已经很艰难了&#xff0c;更何况是更花钱的免费&#x…

bat函数调用 带返回值

bat 脚本之 使用函数 摘自&#xff1a;https://blog.csdn.net/peng_cao/article/details/73999076 综述bat函数写法bat函数调用bat函数返回值综述 Windows bat脚本是一种解释性的脚本语言&#xff0c;可以拿到做很多事情。对于稍简单的问题&#xff1a;比如通过注册表判断下档期…

[置顶] 读取pdf并且在web页面中显示

读取pdf并且在web页面中显示 if (System.IO.File.Exists(f)) { Response.ContentType "applicationpdf"; System.IO.FileStream reader System.IO.File.OpenRead(f); byte[] data new byte[reader.Length]; reader.Read(data, 0, (int)reader.Length); read…

实现路由器无线接收另一个路由器无线信号搭建网络

设置如下即可。 1&#xff0c;主副路由SSID设置成相同&#xff1b; 2&#xff0c;在主路由的BSSID中写上副路由的MAC&#xff1b; 3&#xff0c;在副路由的BSSID中写上主路由的MAC&#xff1b; 4&#xff0c;信道、模式、频道带宽、速率均设置成一致&#xff1b; 5&#xff0c;…

配置 jvisualvm 监控Java虚拟机

配置JMX远程连接 1. 配置启动参数 启动jar时&#xff0c;添加如下配置-Dcom.sun.management.jmxremote.port5050 -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.authenticatefalse -Djava.rmi.server.hostname192.168.94.23 启动参数说明 -Dcom.sun…

所有排序算法

---恢复内容开始--- 先看看复杂度大小吧 冒泡排序 直接上代码&#xff0c;? # 冒泡排序def bubble_sort(alist): for j in range(len(alist) - 1, 0, -1): for i in range(j): if alist[i] > alist[i 1]: alist[i], alist[i 1] ali…

亲身经历之微信支付沙箱环境扫码支付遇到的那些坑

很多用户在调用微信支付扫码支付沙箱环境都一脸迷茫&#xff0c;废话不多说&#xff0c;遇到很多坑&#xff0c;为了让大家少走弯路下面直接说说我开发微信支付遇到坑&#xff0c;微信沙箱不是一般的坑&#xff0c;是很大的坑。 1.首先下载的官方demo,不能直接用&#xff0c;里…

Microsoft .NET Pet Shop 4.0 学习之旅(二) - 项目的引用关系1

Microsoft .NET Pet Shop 4.0 学习之旅&#xff08;二&#xff09; 项目的引用关系1 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />初看到Pet Shop 4.0的源代码觉得结构很复杂&#xff0c;今天我只讨论业务逻辑层&#xff08;…