1、JSP与Servlet交互,在jsp中form的action为servlet:register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="RegisterServlet" method="post">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
repassword:<input type="password" name="repassword" ><br>
age:<input type="text" name="age"><br>
<input type= "submit" value="submit">
<input type="reset" value="reset">
</form>
</body>
</html>
RegisterServlet:
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 RegisterServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String username = req.getParameter("username");
String password = req.getParameter("password");
String repassword = req.getParameter("repassword");
int age = Integer.parseInt(req.getParameter("age"));
String result = "";
if(password.equals(repassword) && age > 18)
{
result += "success:";
}
if(!password.equals(repassword))
{
result +="pass!=repass";
}
if(age <= 18)
{
result +="age <= 18";
}
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>register result</title></head>");
out.println("<body><h1>" + result + "</h1></body></html>");
out.flush();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doGet(req, resp);
}
}
register.jsp中的form的action值为一个servlet,将其改为一个jsp:result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'result.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<% String username = request.getParameter("username");
String password = request.getParameter("password");
out.println("username:" + username +"<br>");
out.println("password:" + password + "<br>");
%>
</body>
</html>
jsp也可以处理,注意jsp中的<% %>中的内容是java程序,用于处理请求。
也可以直接在浏览器的地址栏输入servlet的资源地址,来直接调用servlet,这里地址栏输入的是web.xml中url-pattern值:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DoubleColorBallServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
Set<Integer> set = new HashSet<Integer>();
Random random = new Random();
while(set.size() != 6)
{
int randomValue = random.nextInt(33) +1;
set.add(randomValue);
}
int randomValue = random.nextInt(16) + 1;
String result = "red ball:";
for(Integer i : set)
{
result += i + " ";
}
result += "<br>blue ball:" + randomValue;
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>result</title></head>");
out.println("<body>" + result + "</body></html>");
out.flush();
}
}
上面是一个servlet,web.xml中的配置:
<servlet>
<servlet-name>DoubleColorBallServlet</servlet-name>
<servlet-class>com.cdtax.servlet.DoubleColorBallServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DoubleColorBallServlet</servlet-name>
<url-pattern>/DoubleColorBallServlet</url-pattern>
</servlet-mapping>
可以在地址栏直接输入:http://localhost:8080/webp1/DoubleColorBallServlet进行访问。因为通过浏览器地址栏进行的访问全部都是GET方法的,所以servlet只需要实现doGet方法。