一、Servlet在应用中的作用
① Servlet是Java Web中MVC模式中的C部分,即控制部分,下面展示一下其所处的位置和整个客户端(浏览器)和服务器端的交互过程。(如图1)
Web总结(一)" title="Java Web总结(一)" />
图1
② 由图1可以看到浏览器通过请求将其数据提交到Servlet中,然后则薯Servlet进行控制,即Servlet充当调度员的角色,其作用主滚空要集中在三个方面:接收数据、调用业务逻辑、对客户端做出简单的响应。
③ 然后Servlet将要继续处理的数据提交给JavaBean,然后JavaBean进行验证,然后如果涉及到数据库的 *** 作,就会继续用到DAO(数据访问模型),然后调用数据库中间件JDBC进行数据库的相关 *** 作,然后到数据库中访问数据。
二、实现整个过程
① 为了实现整个过程,首先编写一个html(JSP)前台页面,如图2:
Web总结(一)" title="Java Web总结(一)" />
图2
代码如下:
<html>
<head>
<title>系统登陆</title>
</head>
<body>
<p></p>
<p></p>
<p></p>
<div align="center">
<br>
<br>
<div style="margin:0 autowidth:230pxmargin-top:70px">
<form id="login" action="/JavaWeb/loginServlet" method="post">
<fieldset>
<legend>用户登陆</legend><br/>
<div>用户:
<input name="username" id="username"/>
</div>
<br/>
<div>密码:
<input name="password" id="pwd"/>
</div>
<br/>
</fieldset>
<div style="text-align: centermargin: 20px">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</div>
</form>
</div>
</div>
</body>
</html>
② 由上面的代码可以看到将<form>中的内容提交到/JavaWeb/loginServlet这个Servlet,这里涉及到了配置web.xml配置文件,只需要在配置文件中加入如下的部分:
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>cn.edu.nwsuaf.cie.group4.servlet.LoginServlet</servlet-class>
<load-on-startup>0</load-on-startup>//在开启服务时,就调用init方法
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
③ Servlet中的代码孙备者如下所示
package cn.edu.nwsuaf.cie.group4.servlet
import java.io.IOException
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import cn.edu.nwsuaf.cie.group4.service.LoginService
public class LoginServlet extends HttpServlet{
private String userName
private String password
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("init....")
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
userName = req.getParameter("username")
password = req.getParameter("password")
LoginService loginService = new LoginService()
boolean flag = loginService.validate(userName,password)
if (flag){
req.getRequestDispatcher("index.jsp").forward(req, resp)
}else{
req.getRequestDispatcher("login.jsp").forward(req, resp)
}
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy...")
}
}
然后对上面的代码中的一部分进行解释。这个类继承了HttpServlet,然后并对其中的init()、destroy()、service()方法进行重写,其中Servlet是单例的(设计模式中的singleton model),因为所有的客户端自服务器开启并对servlet进行初始化以后,所有的客户端都是调用这里边的同一个对象,直到调用destroy方法销毁之。
html页面和图片流本来就是各自独立的http请求铅戚返回得到的,因此使用多线程氏宏单独处理,可以实现。如果楼主的目的是: 只通过一次http请求,就把html文本内容以及jpg2进制流内容都返回,那需要处理的是客户端(通常的浏览器是不可能支持的,除非自己写的客户端)如何解析展现服槐核陵务器端返回的流问题, 而不是服务端如何返回的问题。
接液山弯收的完整例唯吵子http://www.tutorialspoint.com/jsp/jsp_file_uploading.htm
读写闹闷 XML
http://zhidao.baidu.com/q?ct=17&tn=ikaslist&lm=0&rn=10&pn=0&fr=search&word=java+xml&f=sug&rsp=java+xml
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)