URL重写的几种实现方式的总结(3)

通过服务器的404文件没有找到的错误处理,实现url rewrite的功能
本站提供的功能如下
http://www.java2000.net/f29
会被自动转发到
http://www.java2000.net/forumdisplay.jsp?fid=29

因为系统并不存在f29,所以使用了404的错误处理页面来实现这个功能
页面代码如下

Code
1 <%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%>
2 <%
3 response.setStatus(HttpServletResponse.SC_OK);
4 String key = (String) request.getAttribute("javax.servlet.forward.servlet_path");
5 if (key != null) {
6 int index = key.lastIndexOf("/");
7 if (index != -1) {
8 key = key.substring(index + 1);
9 if (key.startsWith("f") || key.startsWith("p")) {
10 try {
11 long id = Long.parseLong(key.substring(1));
12 String url = key.startsWith("f") ? "forumdisplay.jsp?fid=" : "viewthread.jsp?tid=";
13 %>
14 <jsp:forward page="<%=url+id%>"></jsp:forward>
15 <%
16 return;
17 } catch (Exception ex) {}
18 }
19 %>
20 <jsp:forward page="<%=response.encodeURL("search.jsp")%>"><jsp:param name="keyword" value="<%=key %>" /></jsp:forward>
21 <%
22 return;
23 }
24 }
25 %>
26 对不起,您请求的页面没有找到!




错误处理页面的制作404,和500
web.xml文件增加如下代码
Code
1 <error-page>
2 <error-code>404</error-code>
3 <location>/building.jsp</location>
4 </error-page>
5 <error-page>
6 <error-code>500</error-code>
7 <location>/error.jsp</location>
8 </error-page>


building.jsp



Code
1 <%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%>
2 <%
3 response.setStatus(HttpServletResponse.SC_OK);
4 %>
5 对不起,您请求的页面没有找到!
error.jsp



Code
1 <%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%>
2 <%@ page import="java.io.*,java.util.*"%>
3 <%response.setStatus(HttpServletResponse.SC_OK);
4
5 %>
6 <body>
7 程序发生了错误,有可能该页面正在调试或者是设计上的缺陷.
8
9 你可以选择
10 <a href=<%=request.getContextPath()+"/forum/new.jsp" %>>反馈</a>
11 提醒我 或者
12 <a href="javascript:history.go(-1)">返回上一页</a>
13 <hr width=80%>
14 <h2><font color=#DB1260>JSP Error Page</font></h2>
15
16 <p>An exception was thrown: <b> <%=exception.getClass()%>:<%=exception.getMessage()%></b></p>
17 <%
18 System.out.println("Header.");
19 Enumeration<String> e = request.getHeaderNames();
20 String key;
21 while(e.hasMoreElements()){
22 key = e.nextElement();
23 System.out.println(key+"="+request.getHeader(key));
24 }
25 System.out.println("Attribute.");
26 e = request.getAttributeNames();
27 while(e.hasMoreElements()){
28 key = e.nextElement();
29 System.out.println(key+"="+request.getAttribute(key));
30 }
31
32 System.out.println("arameter.");
33 e = request.getParameterNames();
34 while(e.hasMoreElements()){
35 key = e.nextElement();
36 System.out.println(key+"="+request.getParameter(key));
37 }
38 %>
39 111<%=request.getAttribute("javax.servlet.forward.request_uri") %>
40
41 <%=request.getAttribute("javax.servlet.forward.servlet_path") %>
42
43 <p>With the following stack trace:</p>
44 <pre>
45 <%exception.printStackTrace();
46 ByteArrayOutputStream ostr = new ByteArrayOutputStream();
47 exception.printStackTrace(new PrintStream(ostr));
48 out.print(ostr);
49 %>
50 </pre>
51 <hr width=80%>
52 </body>
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值