JSP怎么将表单提交到对应的servlet

昨天学习了这些内容,今天做一下分享吧,个人感觉挺乱的。。。。呵呵,其实没事,慢慢就好了。难的不会,会的不难嘛!努力+认真就可以了,相信大家都可以的!加油!!!


下面的图是我用myeclipse建立的项目的目录。


目录结构有点多哈。。。没事其实很简单的!

下面是我的index.jsp中的全部代码:这里只是有一个表单,提交到TestServlet.java这个servlet中


<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>


	<h1>测试servlet</h1>
	
	<hr>
		<form action="servlet/TestServlet" method="post" dir="ltr">
			<input type="text" name="userID"><br>
			<input type="submit" value="查询"><br>
		</form>
		
	<a href="a/b/b.jsp">b.jsp</a>

		
</body>
</html>



下面是TestServlet.java中的全部代码:这个是获取表单提交的内容,然后转发到另一个页面(c.jsp),其中这里包含一个业务逻辑(UserManager.java)

UserManager usermanager=new UserManager();
List userlist=usermanager.findUserByName(username);

以上这两行代码是业务逻辑的代码,获取数据。

package com.majianjie.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		
		//取得表单数据
		
		String username=req.getParameter("username");
		UserManager usermanager=new UserManager();
		List userlist=usermanager.findUserByName(username);
		
		req.setAttribute("userlist", userlist);//设置到req中,key-->value
		
		//转向到一个界面c.jsp,取出list中的数据
		req.getRequestDispatcher("/a/b/c/c.jsp").forward(req, res);//转发getRequestDispatcher
		
	}	
}

下面是UserManager.java 的代码行(即业务逻辑)

package com.majianjie.servlet;

import java.util.ArrayList;
import java.util.List;

public class UserManager {

	public List<String> findUserByName(String name){
		List<String> userList=new ArrayList<String>();
		userList.add("数据一");
		userList.add("数据二");
		userList.add("数据三");
		return userList;
	}
}

下面是c.jsp的代码

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>c.jsp
	<p>
	<%
		List userList = (List)request.getAttribute("userlist");
		out.println(userList);
	
	%>
	<p>
<a href="../../a.jsp">a.jsp</a>
</body>
</html>

下面是a.jsp的代码

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
a.jsp


</body>
</html>


下面是b.jsp的代码


<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>b.jsp


<p>

<a href="../a.jsp">a.jsp</a><br>
<a href="c/c.jsp">c.jsp</a><br>
<a href="../d/d.jsp">d.jsp</a><br>
<a href="../../e/e.jsp">e.jsp</a><br>

</body>
</html>


d.jsp,  e.jsp中的代码和a.jsp中的代码一样,唯一不同的就是:  将a改为d     ,将a改为e......大部分代码是自动生成的,很省事的。

最后是web.xml中的代码:这里是一些配置信息。很重要的!!!嘿嘿嘿

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>TestServlet</servlet-name>
  	<servlet-class>com.majianjie.servlet.TestServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>TestServlet</servlet-name>
  		<url-pattern>/servlet/TestServlet</url-pattern>
  </servlet-mapping>
  
</web-app>


在表单中,当你点击提交按钮,触发这个链接action="servlet/TestServlet"。请求到达服务器tomcat后,tomcat检查当前项目的web.xml中所有的<servlet-mapping></servlet-mapping>
配置中的<url-pattern></url-pattern>的属性值。看当中有没有一个和请求地址servlet/TestServlet相同。结果找到如,如下:
  <servlet-mapping>
      <servlet-name>TestServlet</servlet-name>
      <url-pattern>/servlet/TestServlet</url-pattern>
  </servlet-mapping>
   其中  <url-pattern>/servlet/TestServlet</url-pattern>  是你表单的访问地址
然后,tomcat根据上面的<servlet-name>TestServlet</servlet-name>找到和
<servlet-mapping>相对应的<servlet>配置如下
 <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.majianjie.TestServlet</servlet-class>
  </servlet>
然后根据当中 <servlet-class>找到TestServlet.java文件的地址。


然后通过设置tomcat就可以在浏览器中访问了。例如我的配置好tomcat后在浏览器中输入:http://localhost:8888/test_servlet/就可以访问了,

结果如图:


点击查询后:



点击超级链接b.jsp后是:






郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。