好久没有写代码了,都去写详细设计去了囧。
这次实现的是通过表单提交调用Servlet
首先在WebContent下新建一个jsp文件,注意,这里是不能在WEB-INF文件夹里面建的(如下图,WEB-INF里面的form.jsp不需要),否则待会配置web.xml是找不到目标的。
、
form.jsp代码如下
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<font size = "2">
<form action = "AcceptForm" method = "post">
name: <input type = "text" name = "name"/><br>
province:<input type="text" name = "province"/><br>
<input type = "submit" value= "submit">
</form>
</font>
</body>
</html>
主要就是在html页面里面有两个输入框,输入名字和省份
接着再New一个Class文件,就是java文件,name为AcceptForm.java。这时候新建的文件会自动映射到Java Resources/src下面,最好自己新建一个package,后面web.xml好修改,比如我就新建一个包bac,然后将java文件塞进去。代码如下
package bac;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AcceptForm extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException
{
response.setContentType("text/html");
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String province = request.getParameter("province");
out.println("<font size = '2'>");
out.print("the content of the list is :<br>");
out.print("name" + name + "<br>");
out.print("province" + province + "<br>");
out.print("</font>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
try {
doGet(request, response);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
主要实现在doGet中,这个Servlet主要接收form页面传来的的name和province,然后再动态打印一个新的html页面,内容就是name和province啦。
第三步配置web.xml,我在新建的时候是默认没有这个文件的,于是我又新建了一个动态web项目,这时候勾选了下图的那个选项,然后把web.xml复制过来用,改改文件名就可以用啦。
web.xml文件的代码如下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>firstTest</display-name>
<servlet>
<servlet-name>AcceptForm</servlet-name>
<servlet-class>bac.AcceptForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AcceptForm</servlet-name>
<url-pattern>/AcceptForm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>form.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
关键在于加入<servlet>和<servlet-mapping>两部分,下面的<welcome-file-list>中加入刚才第一个jsp页面form.jsp。这里的<welcome-file-list>是作为显示首页用的,如果有多个页面的时候,把想要显示的页面放到第一个就可以了,系统会自动从上到下扫描,扫描到的第一个作为首页。如果找不到就会报404错误,说什么resource not found。
运行,ok。
到现在还不是很明白jsp的代码规范和格式,整个框架也不很懂,所以一定有说的不对的地方,欢迎大家跟我讨论讨论。我的邮箱Oyang@whu.edu.cn。