JSP传递参数给servlet的三种方法

jsp向servlet传值大致有这么几种情况。
1.1第一种超链接,在href='servletAction?id=xxx'
1.2第二种form表单提交,当点击submit时,action="servletAction" method='get/post'//注意这个可是要按提交按钮的
1.3第三种就是利用ajax,url='servletActionz',当然了,这里也有get和post两种情况,get直接在url后面加问号传参,post会把参数放在实体内容里面。
2.最后在servlet那边 用 request.getParameter("参数名");就可以拿到了
 

Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp;使用request、response对象完成传值,具体实现如下:

1.JSP传值给Servlet

JSP传值给Servlet有几种形式:Form表单传值,url传值,其他方式传值

a、form表单传值:

JSP页面有:<input type="radio" name="staffdepartment" value="1" id="department1" />,将department的id传到Sevlet

中,在程序中如下:ServletRequest request;String staffdepartment=request.getParameter("staffdepartment");可获取jsp传的department,但要获取id还要进行转化:int int_staffdepartment=Integer.parseInt(staffdepartment);

b、url传值

比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值 "JspServlet?action=toServlet",在 servlet同样用 request.getParameter("action")获取;

c、java代码传值

java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。

2.Servlet传值给Jsp

具体实现如下:

java代码:String   a= "abccdefg "; 
             request.setAttribute( "ValueA ",a); 
             request.getRequestDispatcher( "网址/jsp页面 ").forward(request,response); 

jsp页面:

<%

String   s   =(String)request.getAttribute( "ValueA ");

%>

jsp页面就可以取出Servlet的值。

 

 

3.从servlet到jsp的方法

从 servlet转到 jsp不外乎两种方法,重定向 和 url转发

 

a、重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url) 方法。注意这里的 url前不带斜线 /,如 response.sendRedirect(”test.jsp“)

 

b、url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而这里的url前需要带斜线 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)

 

4、从jsp到servlet的方法

a、表单:post方法提交表单

b、链接:url方式(带参数)

 

参考:

JSP与Servlet之间传值 - 优快云博客
http://blog.youkuaiyun.com/zumtz/article/details/6636639

喜欢我你就关注我,觉得好你就点赞。

为了实现这个需求,我们需要以下几个步骤: 1. 创建一个包含超链接的 HTML 文件; 2. 配置 Servlet 并编写其逻辑,用于接收参数、计算平方并将结果显示给用户; 3. 确保项目已配置好支持 Java 的 Web 开发环境(如 Apache Tomcat)。 以下是完整代码示例及说明。 --- ### 第一步:HTML 超链接页面 (`index.html`) 这是一个简单的 HTML 页面,其中包含了指向 Servlet 的超链接。通过 URL 参数的形式传递 `5` 给后台处理程序。 ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>超链接示例</title> </head> <body> <h1>点击下方链接传递数字 "5"</h1> <!-- 使用查询字符串形式传递参数 --> <a href="SquareServlet?number=5">获取 5 的平方</a> </body> </html> ``` --- ### 第二步:创建 Servlet 类 接下来我们创建名为 `SquareServlet` 的 Servlet,它的作用是从请求中提取出参数 `number`,然后计算该数的平方并返回给前端展示。 #### 导入必要的包: 确保导入以下常用包: ```java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; ``` #### 编写具体的业务逻辑: ```java public class SquareServlet extends HttpServlet { // 响应 GET 请求方法 @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码格式防止乱码问题 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { // 获取URL中的"number"参数,默认为整型 int number = Integer.parseInt(request.getParameter("number")); // 计算平方 int result = number * number; // 向客户端输出结果信息 out.println("<!DOCTYPE html>"); out.println("<html><head><title>Square Result</title></head><body>"); out.println("<h1>" + number + " 的平方等于:" + result + "</h1>"); out.println("</body></html>"); } catch (NumberFormatException e) { out.println("<!DOCTYPE html>"); out.println("<html><head><title>Error</title></head><body>"); out.println("<p style='color:red;'>无效输入,请检查您的参数是否正确!</p>"); out.println("</body></html>"); } finally { out.close(); // 关闭流资源 } } } ``` --- ### 第三步:配置 web.xml (如果未使用注解) 如果没有启用基于注解的方式映射路径,则需手动编辑 `web.xml` 文件完成注册操作。 ```xml <servlet> <servlet-name>SquareServlet</servlet-name> <servlet-class>SquareServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SquareServlet</servlet-name> <url-pattern>/SquareServlet</url-pattern> </servlet-mapping> ``` 当然也可以直接采用现代更简洁的注解方式进行替代,在上面 servlet 类头添加一行声明即可省略 XML 步骤: ```java @WebServlet("/SquareServlet") ``` ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值