servlet获取数据库数据
A. html怎么获取后端数据获取方法介绍
1、首先先创建一个HTML,html是前端页面骨架,然后通过javascript调用后端接。口,接受返回的response,这里通过前端的一个select下拉框,调用后台的接口填充数据。
2、html中的需求是在页面在完成后select获取数据库中的值并填充其中,这里定义ajax方法。
3、然后编写后台的程序,编写servlet/controller中的获取数据库值的方法。
4、在前端根据servlet/controller返回的值在js中渲染标签中的值。
5、通过ajax的方式先移除原先的元素,然后再把数据库的值填充进去。
6、因为html中引用了jquery,所以一定要引入jquery脚本。
7、开发servlet/controller时要注意返回数据的格式。
B. 求一个jquery ajax请求servlet获取数据库数据,并显示在页面的例子
假设:
1、你的页面在Web-Root下,内容为: <div id="showMsg"></div><input type="text" id="userName" />,所用编码为utf-8
2、你的servlet为: HelloWorldServlet.java 映射路径为 servlet/helloWorldServlet
步骤:
1、引入jquery-1.6.4.min.js
2、编写id为userName的输入框的点击触发函数:
$("#userName").keyup(function(){
$.ajax({
type: "post",
url: "servlet/helloWorldServlet?userName="+$(this).val(),
dataType: "json",
success: function(data){
$("#showMsg").html(data.msg);//修改id为showMsg标签的html
}, error: function(){
alert("请求出错");
}
})
})
3、后台处理接收到的内容:
request.setCharactorEncoding("utf-8");
String userName = request.getParameter("userName");
response.setCharactorEncoding("utf-8");
PringWriter out = response.getWriter();
out.print("{\"msg\":\"你好~~"+userName+"!\"}");
注意事项:
1、这里的编码统一为utf-8
2、请求路径servlet/helloWorldServlet为相对路径,因此你的页面必须在项目的Web-Root下(也就是默认的web文件夹下,名字可能因项目配置不同而改变)
3、没了,记得给分哦,打字很辛苦的~
C. 怎么访问jsp时通过servlet获取数据库的数据
HTML是固定死的,无法动态的显示处理后的结果。
而servlet和jsp解决了这个问题,servlet可以接受来自用户登陆请求页面的数据,进行计算处理之后,返回给jsp页面来显示。
就你这个问题来说,应该这样写:
登录页面使用html和jsp都无所谓,里面需要一个表单FORM,action="处理业务的servlet的url",有一个提交查询按钮,这个查询按钮为submit。那么点击查询后,会把表单数据提交给servlet,在servlet中可以通过request.getParameter("参数名");来获取表单中的用户名参数,然后在servlet中调用jdbc代码取得数据库中对应用户的余额,然后通过request.setAttribute("余额",yue);可以传给jsp,在jsp页面中使用<%=request.getAttribute("余额")%>来显示相应的余额。
D. servlet获取数据库内容,如何将所有字段放到数组里在jsp怎么显示出来,用jstl,
把list属性存到application中,然后再jsp取就行了。看servlet的属性里面的application属性。
E. 如何使用jsp页面跳转到servlet中读取数据库中的数据,再通过servlet跳转到下一个jsp页面
servlet执行数据库操作.把结果例如得到了一个List all = DB.get()....
可以这样做 : request.setAttribute("allList",all);
这是把all的值赋给名字叫 allList 的
然后JSP 页面里就可以通过
List allList = request.getAttribute("allList");
然后在JSP页面里就可以得到这个结果了
我看你写的DAO操作.
如果结果是一个集合的话
所以servlet里应该是 List all = IDAO.getList() 看你自己的方法如果调用了..
然后通过我上面说的一个赋值,一个取值.就可以在JSP页面里取出来了.
F. 怎么让servlet取出数据库数据
项目中关于数据库的操作,一般都是会集中在DAO总编写,而外部的只需要调用他的各种方法的借口就行了,servlet就相当于一个class,你之所以不会是不知道,怎样将得到的数据传到jsp页面中,所以我推荐,你去看一下相关知识,比如
request.getRequestDispatcher("/somePage.jsp").forward(request, response); 和response.sendRedirect("/somePage.jsp");
这两个方法的运用,
同时,你必须了解servlet和jsp的4个作用域,就是保存你数据库取出来的数据的4个地方,关键词是request,session,application和page,你可以去一个一个的看一下,至于servlet和class差不多,你只要学会数据会的地方和怎样把他们传给页面,你就很明白了
G. layui表格通过servlet连接数据库拿到数据
1.layui布局表格
<div class="demoTable">
搜索ID:
<div class="layui-inline">
<input name="id" class="layui-input" id="demoReload" autocomplete="off">
</div>
<button class="layui-btn layui-bg-green" data-type="reload">搜索</button>
</div>
<table class="layui-hide" id="LAY_table_user" lay-filter="user"></table>
<script>
layui.use('table',function(){
var table =layui.table;
//方法级渲染
table.render({
elem:'#LAY_table_user'
,url:'http://localhost:8080/onlineTest_war_exploded/question'
,cols: [[
,{field:'questionId',title:'题号',width:200}
,{field:'questionTitle',title:'题目',width:300}
,{field:'city',title:'通过率',width:200}
,{field:'classify',title:'难度',width:200}
]]
,id:'testReload'
,page:true
,height:310
});
var $ =layui.$,active = {
reload:function(){
var demoReload =$('#demoReload');
//执行重载
table.reload('testReload', {
page: {
curr:1 //重新从第 1 页开始
}
,where: {
key: {
id:demoReload.val()
}
}
},'data');
}
};
$('.demoTable .layui-btn').on('click',function(){
var type =$(this).data('type');
active[type] ?active[type].call(this) :'';
});
});
</script>
url是servlet在web.xml下手动配置的路径
第一个javabean对象是存放表格原始数据 第二个javabean是存放code msg count和表格原始数据的 把第二个javabean转换为json格式发给后台
如图 第一次检查的时候发现传回去的json里面带\ 原因:之前用ajax已经把存放列表原始数据的数据转换为json了 再用第二个javabean对象又转换了一次相当于没转换 所以识别不出来
结果:
H. 如何利用ajax将servlet从数据库中取得的数
显示数据的jsp页面发送ajax请求servlet获取表格的html然后设置容器的innerHTML就行了
demo,居于jquery的,注意servlet需要将数组组合成table的html代码返回,而不是直接返回数组,ajax接受的数据只有xml和字符串2种
<script
type="text/javascript"
src="jquery.js"></script>
<script
type="text/javascript">
$(function
()
{
$.ajax({
url:
'xxxxxxxx.do',
//servlet的url,注意要组合成table的html然后返回就行了
cache:
false,
dateType:
'html',
success:
function
(data)
{
$('#dv').html(data);
},
error:
function
(xhr)
{
alert('servlet出错\n'+xhr.status+'\n'+xhr.responseText);
}
});
});
</script>
<div
id="dv"></div>
I. eclips上在servlet中获取数据库中所有的信息并将其显示在页面上
您好,//import语句就不写了,反正现在的IDE这么先进,这难不了大家的
public class GetA000_photoServlet extends HttpServlet {
private static final String CONTENT_TYPE = "image/jpeg";
/**Initialize global variables*/
public void init() throws ServletException{
}
/**Process the HTTP Get request*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
//从页面中取得传进来的参数personid
String personID = request.getParameter("personID");
//DataSourceManager 为取数库连接的类
DataSourceManager db = null;
Connection conn = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
//用来存储照片数据的缓冲区
byte [] buf=null;
String sql = "select a.photo from Ftable a where a.PERSONID=?";
try{
db = new DataSourceManager();
if(db != null){
conn = db.getConnection();
if(conn != null){
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,personID);
rs = pstmt.executeQuery();
if(rs.next()){
//buf = rs.getBytes(1); //在网上查到的处理代码是这样处理的,但我这样做后却解决不了问题,我同学以为是数据的问题,然后认为只要把结果rs.getBytes(1)写到输出流,但结果确是令人非常失望,这令我不理解.后来作了如下的修改就基本解决了.(我的图片是以Blob类型存Oracle中的)
Blob blocco = (Blob)rs.getObject("A000_PHOTO");
int length = (int)blocco.length();
buf = blocco.getBytes(1, length);
}else{
buf = new byte[0];
}
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null)
rs.close();
if(pstmt != null)
pstmt.close();
if(conn != null)
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}if(buf == null)buf = new byte[0];
//告诉浏览器输出的是图片
response.setContentType(CONTENT_TYPE);
//图片输出的输出流
OutputStream out = response.getOutputStream();
//将缓冲区的输入输出到页面
out.write(buf);
//输入完毕,清楚缓冲
out.flush();
}
/**Clean up resources*/
public void destroy() {
}
}
//页面调用
<img border="0" src="<%=request.getContextPath()%>/getPhotoServlet/getPhoto?personID=16873&ts=aaaa" width="200" height="250">
TS是一个随机字段用于防止数据库更新后,页面不能显示更新后的图片.我传入的是一个时间戳以保证每次请求的地址都是不一样的.如果你的应用布署带有项目名的话,如http://localhost:8080/myServer/...,请不要忘了把<%=request.getContextPath()%>忘了写上.
//web.xml配置
<servlet>
<servlet-name>getPhotoServlet</servlet-name>
<servlet-class>com.szdc.web.gbkc.GetA000_photoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getPhotoServlet</servlet-name>
<url-pattern>/getPhotoServlet/getPhoto</url-pattern>
</servlet-mapping>