一、转发参数:
1.将jsp里面的参数通过LoginServlet转到PageSelvert:
@WebServlet(“/login”)
public class LoginServlet extends HttpServlet{
protected void dopost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
//转发到PageServlet去
Request.getRequestDispatcher(“/page”),forword(request,reapomse);
}}
@WebServlet(“page”)
public class PageServlet extends HttpServlet{
protected void dopost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
String usename = request.getParameter(“usename”);
String password = request.getParameter(“password”);
System.out.pritln(usename);
System.out.pritln(passworrd);
}
}
2.将LoginServlet里面的存放的值带给PageServlet中去:
@WebServlet(“/login”)
Public class LoginServlet extends HttpServlet{
Protected void dopost(HttpServletRequest request,HttpServletResponse response){
//在request对象里,设置属性值,只要是同一个request对象才能获得此数据(所以转发可以,重定向不行,重定向是两个)
//将email带过去(只能在前面,如是在传的后(getRequestDisPatcher后面),则得不到)
Request.setAttribute(“email”,”123456@163.com”);
Request.getRequestDisPatcher(“/page”),forword(request,response);
}
}
@WebServlet(“/page”)
Public class PageServlet extends HttpServlet{
Protected void dopost(HttpServletRequest request,HttpServletResponse response){
//得到123456@163.com
String email = (String)request.getAttribute(“email”);
//删除email值
Request.removeAttribute(“email”);
//拿到所有的名字
Request.getAttributeNames();
String usename = request.getParameter(“usename”);
String password = request.getParameter(“password”);
}
}
** 转发参数:** removeAttribute 删除 getAttributeNames 拿到所有的名字 setAttribute 设置值 getAttribute 得到值
request response 他们的生命周期,就在请求和响应之间结束。
二、隐藏JSP:
可以将JSP放入WEB-INF目录,以后只能用转发来访问以下的JSP
<welcome-file-list>
<-- 欢迎页面是转发机制的跳转 -->
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
目的:隐藏jsp 将访问页面改成如下:
<welcome-file-list>
<welcome-file>/WEB-INF/pages/index.jsp</welcome-file>
</welcome-file-list>
前面加“/”直接到以其为根目录的地方
//admin为一个虚拟夹子
@WebServlet("/admin/test")
public class TestServlet entends HttpServlet{
protected void deGet(HttpServletQuest req,HttpServletResponse resp)throws ServletException,IOEception{
resp.sendRedirect("index.jsp");
}
}
想访问到的3种方法:
//”..”代表在index.jsp目录下向上跳一个目录
resp.sendRedirect("../index.jsp");
System.out.println(req.getContextPath());//servlet7_url
resp.sendRedirect(req.getContextPath()+"/index.jsp");
resp.sendRedirect(req.getContextPath() + "/");
三、乱码问题:
Tomcat7 版本转换乱码需要看方法来转get string类转码 post就直接设置编码就可以了
String s=req.getParament("text");
↓
<from actoin="lm" method="get">
System.out.println(new String(s.getBytes(ISO-8859),"utf-8"));
req,setCharacterEncoding("UTF-8");
String s=req.getParamenter("test");
↓
<from actoin="lm" method="post">
System.out.println(s);
Tomcat8 版本就不需要半段方法,直接设置转码就可
req.setCharacterEncoding("UTF-8");
String s=req.getParameter("test");
System.out.println(s);
如果不转码,直接打印,就会出现乱码,如下图:
如果想将一个Servlet里面的字符传到另一个Servlet中去,需要进行转码,如:
Request.sendRedirect(text1?name=”狗子”);
此时应写成:
Text0Servlet:
Request.sendRedirect(“text1?name=”+URLEncode.encode(“狗子”));
Text1Servlet:
//tomcat8
Request.setCharacterEncoding(“UTF-8”);
//tomcat 7
String s=new String(request.getParameter(“name”).getBytes
(“ISO-8859-1”),”utf-8”);
System.out.println(request.getParameter(“name”));
resp.sendRedirect("test1?name="+URLEncoder.encode("多态","UTF-8"));
↓
req.setCharacterEncoding("UTF-8");
//String s=new String(req.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")
System.out.println(req.getParameter);
相关推荐
3. 在jsp中处理:在jsp页面内部,通过RequestDispatcher的forward方法,将请求转发到实际的动态资源。 ```java String url = "/article/" + id + ".html"; request.getRequestDispatcher(url).forward(request, ...
本资料"jsp实现URL伪静态.rar"将详细介绍如何在JSP环境下实现这一功能。 首先,我们要理解动态URL与静态URL的区别。动态URL通常包含一系列参数,如问号(?)、等号(=)以及多个参数之间用与号(&)分隔,这样的URL...
- **使用Filter:** 创建一个Filter拦截所有请求,解析重写后的URL,然后转发到对应的Servlet或JSP。 3. **URL重写的实现步骤:** - **定义规则:** 设计URL重写规则,如将`/article/123`映射到实际的动态URL如`/...
标题“struts1直接跳转到jsp-无action的url”所指的是在Struts1框架下,如何不通过Action类直接将请求转发到JSP页面。这种做法虽然不推荐,但在某些情况下可能被用来简化流程或快速测试。 在Struts1中,通常的请求...
在`jsp:forward`的使用中,我们通常需要指定一个`page`属性,该属性值为要转发的目标页面的URL。例如: ```jsp <jsp:forward page="targetPage.jsp" /> ``` 上述代码会将当前页面的请求转发到`targetPage.jsp`。...
其实是将jsp变为了servlet再隐藏servlet名称",是指通过将JSP页面映射到Servlet,然后在Servlet中处理逻辑,最后通过`RequestDispatcher.forward()`或`Response.sendRedirect()`方法将控制权转交给JSP页面,这样URL...
" 这意味着通过某种方式,如使用Apache的 mod_rewrite 模块或者Tomcat的Context配置,或者在JSP应用中使用Filter进行URL重写,将请求参数隐藏在URL路径段中,使得URL更加美观且不易被直接解析。 "标签"中的"jsp 伪...
在JavaServer Pages (JSP) 开发中,有时我们需要实现页面重定向,但是不希望在浏览器的地址栏显示重定向后的URL。这个需求通常出现在我们希望保持用户界面的一致性或者隐藏实际的请求路径时。标题提到的"jsp重定向...
`URLRewrite`是一个在Java Web环境中广泛使用的开源过滤器,它主要负责处理HTTP请求的URL,实现URL的重写和转发,以便达到优化URL、实现动态网站的伪静态效果、隐藏真实请求路径等目的。在开发过程中,利用`URL...
例如,隐藏真实的 URL、实现 URL 的加密、实现 URL 的重定向等。在 Java 中,有多种方式可以实现 URL 重写,包括使用 WEB 服务器自身提供的组件和使用开源项目 UrlRewrite Filter。 UrlRewrite Filter 是一个基于 ...
而`jsp:forward`是在服务器端完成的,用户浏览器的地址栏不会显示变化,这使得用户对转发过程通常是透明的。 在实际应用中,`jsp:forward`常常用于以下场景: 1. **逻辑分层**:在MVC(模型-视图-控制器)设计模式...
- **根据正则表达式重定向**:这是最常用的功能,通过正则表达式匹配URL,如`/products/([0-9]+)`,并将捕获的组作为参数传递给目标URL(如`/products/index.jsp?product_id=$1`)。这样可以灵活地处理不同类型的...
2. 页面转发与重定向:在JSP中,可以使用`jsp:forward`动作或`RequestDispatcher`对象的`forward()`方法进行页面转发,这使得浏览器地址栏中的URL保持不变。而重定向是通过响应对象的`sendRedirect()`方法实现,会...
- **jsp:forward**:将请求转发到另一个页面,通常用于处理URL隐藏。 - **jsp:useBean**:找到或创建一个JavaBean,用于封装数据和逻辑。 5. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag ...
- 如果浏览器关闭了Cookie,可以在JSP中通过URL重写或隐藏表单字段来开启SESSION跟踪。 18. **作用域范围**: - 作用域从小到大排序:page、request、session、application。 19. **application对象**: - ...
JSP 中的隐式注释为 注释内容 --%>,这种注释方式可以将注释内容隐藏在 JSP 页面中,以便在浏览器中不显示注释内容。 五、重定向 在 JSP 中,可以使用 response 对象的 sendRedirect() 方法进行重定向。...
- **请求分派(Forward)**:通过`RequestDispatcher`的`forward()`方法,服务器内部转发请求,用户在浏览器中看不到URL变化。 6. **HTTP请求和响应对象**: - **HttpServletRequest**:提供请求信息,如参数、头...
<url-pattern>/jspServlet</url-pattern> ``` 2. **处理HTTP请求**: - `HttpServletRequest`对象提供了多种方法来获取客户端发送的数据,如`getParameter()`用于获取表单参数。 - `HttpServletResponse`对象...
2. **页面间转发关系**:如果页面A通过`jsp:forward`标签转发到页面B,应该使用`request.setAttribute()`和`request.getAttribute()`来传递数据,因为转发不会创建新的请求。 ```jsp // 页面A String username = ...