Serlvet可以完成将java程序运行到web环境中
Servlet 创建:手动&自动
1)手动创建
new一个web project,添加一个包,里面有一个继承于HttpServlet的类
覆盖doGet方法,再其中添加一些测试程序
通过resp.setContentType("text/html;charset=UTF-8"); 获取了 out
通过out写信息到页面
package itat.zttc.servlet;
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 HiServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(req, resp);
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body><h1>Hello Servlet</h1></body>");
out.println("</html>");
}
}
package itat.zttc.servlet;
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 HiServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(req, resp);
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body><h1>Hello Servlet</h1></body>");
out.println("</html>");
}
}
2)自动创建
课选择需要覆盖的方法,如doGet,doPost
创建完成后Myeclipse会自动写好servlet的java文件和在web.xml中的配置信息
Servlet 配置
配置web.xml让该servlet可以访问
1)创建<servlet>
<servlet>
<servlet-name>XXX</servlet-name> <span style="white-space:pre"> </span>为该servlet设定名称
<servlet-class>xxx.xxx.xxx.x</servlet-class> <span style="white-space:pre"> </span>servlet的类,要求加入包路径
</servlet>
2)创建<servlet-mapping
<servlet-mapping>
<servlet-name>XXX</servlet-name><span style="white-space:pre"> </span>说明servlet的name
<url-pattern>/xx</url-pattern><span style="white-space:pre"> </span>声明在浏览器中需要访问的地址
</servlet-mapping>
resp响应的使用
使用doGet或doPost方法中的resp参数可以向浏览器输出相应的数据
1)设置MIME类型
resp.setContentType("text/html;charset=UTF-8");
2)通过resp获取PrintWriter的输出流,并向浏览器写入数据
<span style="white-space:pre"> </span>PrintWriter out = resp.getWriter();
<span style="white-space:pre"> </span>out.println("<html>");
<span style="white-space:pre"> </span>out.println("<body><h1>Hello Servlet</h1></body>");
<span style="white-space:pre"> </span>out.println("</html>");
获取请求参数
HttpServletRequest可获取参数
中有多种方法,可以获取各种信息 延伸阅读 HttpServletRequest介绍: http://www.cnblogs.com/xdp-gacl/p/3798347.html
public class HiServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(req, resp);
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html><body>");
out.println("<h1>"+req.getContextPath()+"</h1>");//获取上下文路径
out.println("<h3>"+req.getSession().getServletContext().getRealPath("/")+"</h3>");//获取绝对路径
String username = req.getParameter("username");//获取请求参数
String password = req.getParameter("password");
Enumeration<String> enu = req.getParameterNames();//获取参数
while(enu.hasMoreElements()){
out.println(enu.nextElement()+"<br/>");
}
out.println("<h1>"+username+"</h1>");
out.println("<h1>"+password+"</h1>");
out.println("</body></html>");
}
}
该代码实现结果
由问号输入的请求都为get请求
参数也可通过表单来传递
对于username 列
<form action="LoginServlet"method="post" class="form-horizontal" >
<!--提交表单时,发送表单数据到 action属性的文件中 ep:"LoginServlet">
<span style="font-family: Arial, Helvetica, sans-serif;">...</span>
<input type="password" name="password" id="password" class="form-control" placeholder="请输入您的密码" style="width: 142px"/><pre name="code" class="html"><!--type规定input元素类型 <span style="font-family: Verdana, Arial, 宋体; background-color: rgb(249, 249, 249);">name 属性用于对提交到服务器后的表单数据进行标识 id属性为html中标签的id </span>>
在servlet中就可以通过getParmeter方法得到参数
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//PrintWriter out = response.getWriter();
String username = request.getParameter("username"); //得到name属性为“username”的数据
String password = request.getParameter("password");
String gender = request.getParameter("gender");
UserService userService = new UserService();
if(userService.userJudge(username, password,gender)){
response.sendRedirect("succese.jsp");
}
else {
response.sendRedirect("erroe.jsp");
}
}