写一个form表单然后获取表单中的所有元素
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "#" method="">
用户名<input type = "text" name = "username"></br>
密码<input type = "text" name = "password"></br>
男 <input type = "radio" name = "sex" checked ="checked" value = "男"></br>
女<input type="radio" name ="sex" value="女"></br>
<input type "checkbox" name ="hobby" value= "篮球"篮球>
<input type "checkbox" name ="hobby" value= "唱歌"唱歌>
<input type "checkbox" name ="hobby" value= "画画"画画>
</br>
<select name = "city">
<option>---请选择</option>
<option value ="sh">上海</option>
<option value ="bj">背景</option>
<option value = "sz">深圳</option>
<select>
<input type = "submit" value="提交">
</form>
</body>
</html>
配置Demo01 Servlet的基本属性
<servlet>
<servlet-name>demo01</servlet-name>
<servlet-class>com.lanou3g.Demo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
利用Srevlet获取form表单的所有元素
```
public class Demo01 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//获取表单中所有提交的属性
String username = request.getParameter("username");
System.out.println(username);
String password = request.getParameter("password");
System.out.println(password);
String sex = request.getParameter("sex");
System.out.println(sex);
//获取复选框的传递的值
String[] hobbys = request.getParameterValues("hobby");
if (hobbys!=null) {
for (String hString : hobbys) {
System.out.println(hString);
}
}
String city = request.getParameter("city");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
第二种获取form表单中的方法
public class Demo01 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//利用getParameterNames()打印表单中所有提交的属性
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
String name =names.nextElement();
//根据enumeration取出对应的值
String[] strings = request.getParameterValues(name);
for (String string : strings) {
System.out.println(string);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
第三种获取form表单中的所有元素
public class Demo01 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//把表单封装到对象中
//参数1 要封装的对象 注意:该对象要符合javabean规范
//参数2 map集合
User user = new User();
Map<String, String[]> map = request.getParameterMap();
try {
BeanUtils.populate(user, map);
System.out.println(user);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
配置Demo02 Servlet的基本属性
<servlet>
<servlet-name>demo02</servlet-name>
<servlet-class>com.lanou3g.Demo02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo02</servlet-name>
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
配置Demo03 Servlet的基本属性
<servlet>
<servlet-name>demo03</servlet-name>
<servlet-class>com.lanou3g.Demo03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo03</servlet-name>
<url-pattern>/demo03</url-pattern>
</servlet-mapping>
请求转发 : 请求转发只能访问服务器内部. 无论你怎么写项目都在 路径下运行
public class Demo02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求转发 获取转发器
//请求转发只是服务器内部的访
//不管你怎么写, 始终都在项目路径下
RequestDispatcher dispatcher= request.getRequestDispatcher("/demo03");
dispatcher.forward(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
public class Demo03 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("我是dem03");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
请求重定向: 请求重定向是两次请求 不能获取的域中的值.
请求重定向既可以获取本地服务器也可以获取非本地服务器
public class Demo02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求重定向 查看是否能获取域中的值
//重定向是两次请求 不能获取到request域中的值
//请求转发能不能 访问本地服务器以外的服务器
//重定向既可以访问 本地服务器 也可以访问 非本地服务器
response.sendRedirect("/SH-web-servlet03/demo03");
// response.setHeader("location", "/SH-web-servlet03/demo03");
response.setStatus(302);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
public class Demo03 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取request域中保存的值
String name = (String)request.getAttribute("name");
System.out.println("我是demo03." + name);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
请求包含 相当于把两个页面的响应合成了一个响应 再返回给浏览器
public class Demo02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//获取字符流
PrintWriter out = response.getWriter();
//给request 域中 添加值
request.setAttribute("name", "ssss");
//请求包含
//相当于把两个页面的响应合成一个响应 返回给浏览器
//请求转发 浏览器只能响应一次数据
request.getRequestDispatcher("/demo03").include(request, response);
//响应一句话
out.write("123");
System.out.println("我是demo02的结尾 ");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
public class Demo03 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("456");
//获取request域中保存的值
String name = (String)request.getAttribute("name");
System.out.println("我是demo03." + name);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}