一,说明
二.Servlet执行流程
三.Servlet生命周期
四.Tomcat装载Servlet的三种情况
Servlet实例一旦被创建之后,该Servlet对象就会长期保存在内存中.
- 1.修改web.xml文件中<Servlet></Servlet>之间添加如下代码,loadon中数字越小标识装载顺序优先级就越高;
<load-on-startup>1</load-on-startup>
- 2.Servlet容器启动后,客户首次向Servlet发送请求
- 3.Servlet文件被修改后,Tomcat会自动将其装载(也就是自动将.java文件重新编译为.class字节码文件)
五.Servlet与JSP九大内置对象的关系
六.servlet获取表单数据以及相对路径和绝对路径
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//实例化实体user类
Users user=new Users();
System.out.println("post提交成功");
try{
//声明表单传递过来的参数
String uname,pass;
Date birthday = null;
String[] favorites;
boolean flat;
//将request数据转码
req.setCharacterEncoding("utf-8");
uname = req.getParameter("uname") !=null ? req.getParameter("uname") :"" ;
pass = req.getParameter("pass") !=null ? req.getParameter("pass") : "" ;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将接收到生日的字符串类型日期转换为日期类型
String birth = req.getParameter("birthday") != null ? req.getParameter("birthday") : "";
birthday = sdf.parse(birth);
//爱好
favorites = req.getParameterValues("favorites") != null ? req.getParameterValues("favorites") : null;
//将从表单接收过来的值赋值给user实体对象属性
user.setUname(uname);
user.setPass(pass);
user.setBirthday(birthday);
user.setFavorites(favorites);
//将赋值后的实体对象注册到session中
req.getSession().setAttribute("myUser", user);
if(req.getParameterValues("isAccept") != null)
{
user.setFlat(true);
}else
{
user.setFlat(false);
}
/*
* 重定向路径
*/
// resp.sendRedirect("/userInfo.jsp");
// resp.sendRedirect(req.getContextPath()+"/userInfo.jsp");
/*
* 服务器内部转发下三种跳转路径方式效果相同
*/
System.out.println(req.getContextPath()); //输出/firstServlet
/*----------------1. 绝对路径------------------------------*/
//req.getRequestDispatcher("/userInfo.jsp").forward(req, resp);
/*----------------2. 相对路径------------------------------*/
req.getRequestDispatcher("../userInfo.jsp").forward(req, resp);
/*----------------3. 获得上下文对象---------------------*/
req.getRequestDispatcher(req.getContextPath()+"/userInfo.jsp").forward(req, resp);
}catch(Exception ex){
ex.printStackTrace();
}
}
以上跳转到userInfo.jsp页面获取用户信息
<h1>>查询用户信息</h1>
<jsp:useBean id="myUser" class="lxf.entity.Users" scope="session"></jsp:useBean>
<p>用户名:<jsp:getProperty name="myUser" property="uname" /></p>
<p>密码:<jsp:getProperty name="myUser" property="pass" /></p>
<p>生日:
<%
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String birth = sdf.format(myUser.getBirthday());
out.print(birth);
%>
</p>
<p>爱好:
<%
String[] favs = myUser.getFavorites();
if(favs != null)
{
for(String fav:favs)
{
out.print(fav+" ");
}
}
%>
</p>
<p>是否接受条款:<jsp:getProperty name="myUser" property="flat" /></p>
七 servlet接收web.xml中的初始化参数
- web.xml配置
<servlet>
<servlet-name>GetInitParamterServlet</servlet-name>
<servlet-class>lxf.servlet.GetInitParamterServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>GetInitParamterServlet</servlet-name>
<url-pattern>/servlet/GetInitParamterServlet</url-pattern>
</servlet-mapping>
- 通过GetInitParamterServlet.java中的init方法接收web.xml中的初始化参数:
//通过init初始化函数接收web.xml中的初始化参数
public void init(){
this.setUsername(this.getInitParameter("username"));
this.setPassword(this.getInitParameter("password"));
}
八. MVC
九.详细代码请查看
https://github.com/liangxifeng833/my_program/tree/master/java/jsp
参考网站
理解servlet