*- eclipse2019版本一开始新建Web项目时,在WebContent文件包中创建JSP文件报错;
解:未导入servlet容器类库,下载tomcat并将里面的servlet.jar导入进来
- ** 如何集成eclipse和tomcat**
- eclipse如何与数据库相连接?
解:先导入jdbc包,放在项目的WEB-INF里的lib里
- ** 使用SQL语句时浏览器显示“对象名无效”**
解:dbo表示每个数据库的默认用户,具有所有者权限
- ResultSet对象的游标移动
解:要使用resultset的这个方法,首先在得到这个resultset的时候必须把statement声明成为scrollable,例如:
Statement stmt = connection.Statement(sql, para1, para2);
其中para1和para2可以使用ResultSet类中的常量。
- 关于JSP中的errorpage属性使用时500错误的问题(在IE浏览器,而chrome不会报错)
解:由于IE5以后的错误处理机制发生变化
1)在exception.jsp(就是写有isErrorPage的)中添加:<% response.setStatus(200); %>
或者response.setStatus(HttpServletResponse.SC_OK);
2)在IE浏览器里设置,IE浏览器–右上角的设置–Internet选项—高级—把滚动条拉到最下面,把 显示http友好错误信息 取消选中。
设置响应的状态码。这个方法被用于当响应结果正常时(例如,状态码为SC_OK或SC_MOVED_TEMPORARTLY)设置响应状态码。如果发生错误,而且来访者希望调用在web应用中定义的错误页面作为显示,那么应该使用sendError方法代替之。使用setStatus方法之后,容器会清空缓冲并设置Location响应头,保留cookies和其他响应头信息。
- JSP正常插入HTML的图片标签,图片显示不出来
解:1)对tomcat配置(自行百度)
2)使用相对路径,图片文件夹和JSP文件在同一级
可参考:https://zhidao.baidu.com/question/96634139.htmlhttps://zhidao.baidu.com/question/96634139.html
- -GET与POST请求区别
在浏览器输入一个网址访问网站、链接访问网站是GET请求;
FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式
GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。POST的安全性比GET的高
- -设置了setCharacterEncoding(“UTF-8”),还是中文乱码
解:由于POST传来数据,Tomcat默认以ISO-8859-1编码成单字节数据,若没有进行请求编码设置或重新编码操作,那么中文字符会在jsp页面中输出???,出现类似多个?形式的乱码现象;
若已获取请求参数,此时还没有设置过编码,Tomcat会设置默认Post请求参数编码为ISO8859_1,那么你再设置成UTF-8也无效了,还是ISO-8859-1
解决·:1.改为get请求
2.下图,先解码在编码
- -新建的Web项目没有web.xml
解:因为刚创建时有个选项,问你要不要自带创建web.xml,没有打勾。当然后面也可以自己创建:在创建的项目上右键:–> Java EE Tools --> Generate Deployment Descriptor Stub
- - 简单的Servlet报错405
- 解:在我们正常实现的时候,不应该调用super.xxx()方法,而是重新去实现这些方法,就ok了。
参见: - - Eclipse中没有找不到build path
解:如果Project Explorer右键没有build path。点击Window ->show view 选择package explorer
- - Servlet3.0基本不会像MyEclipse自动更新web.xml,但是有个新特性:注解
3.0新特性参见:
或
- - Serlvet 初始化参数时servlet抛出空指针异常
解:在初始init方法中添加一行
- JS中type=submit按钮如何先js判断条件在跳转action
- - 上下文 Context是什么东东?
简单理解是类似文章上下文,你理解文字所描述的语境,有了语境才知道什么意思。
例如:一个人在街上发出“哈哈哈哈”的声音,
你会以为什么?他是神经病?
而其实上文提到是他的狗丢了,而他的狗叫哈哈。
在程序里,例如:一个软件点击按钮跳转另一个新界面,要保存你从哪个界面跳过来的信息等,保证可以跳回;
在Servlet里,ServletContext是servlet上下文的实例对象
看到一种说法是:在一个web容器中,它是一个全局的储存信息的空间,是容器级别的概念(不同于session),当web容器启动时,会为每一个WEB应用程序(webapps下的根目录就是一个应用程序)创建一块共享的存储区域。
参见:
- - 请求转发与响应重定向中路径参数区别(相对路径与绝对路径区别)
重定向
在web应用下,发出一个response,告诉浏览器重新发出一次请求,去请求一个新的地址,此时的地址栏中会发生变化。重定向是浏览器在做!
例如:项目名team,有com包以及test.jsp、show.jsp(同一级)。
现在请求访问的URL地址:http://localhost:8080/Ch1_Servlet/test.jsp
response.sendRedirect("show.jsp");
//相对路径
//容器相对于原来请求URL的目录加参数来生成完整的URL
//http://localhost:8080/Ch1_Servlet/show.jsp
response.sendRedirect("/show.jsp");
//绝对路径
//容器相对于Web应用本身加参数建立完整的URL,这是因为 重定向response.sendRedirect("")
//是服务器向客户端发送一个请求头信息,由客户端再请求一次服务器,请求是在服务器外进行的.
//http://localhost:8080/show.jsp
请求转发
在web应用下,是服务器主动的转发一个请求,这个请求从头到尾只有一个,并没有让浏览器重新发出一个请求,此时的地址栏中不会发生变化。转发是服务器在做!
request.getRequestDispatcher("show.jsp");
//相对路径
//与response一样
request.getRequestDispatcher("/show.jsp");
//绝对路径与Servlet重定向不同,容器将相对于**Web应用的根目录**加参数生成完整的URL(即“/”根路径就是相对于虚拟路径)
//这是因为转发是在服务器内部进行的,写绝对路径/开头指的是当前的Web应用程序
//http://localhost:8080/Ch1_Servlet/show.jsp
关于“/”
1、重定向的 / 表示:http://服务器ip:端口/
2、请求转发的 / 表示:http://服务器ip:端口/项目名
【重定向是浏览器做,只知道发给哪个服务器,不知道具体是服务器的哪个project。
转发是服务器做,是服务器某个project内部的转发】
具体参见:
String path=pageContext.request.contextPath();
//jsp取绝对路径的方法,相当于"/项目名"
假定你的web application 名称为news,你在浏览器中输入请求路径:
http://localhost:8080/news/main/list.jsp
System.out.println(request.getContextPath());
//打印结果:/news
System.out.println(request.getServletPath());
//打印结果:/main/list.jsp
System.out.println(request.getRequestURI());
//打印结果:/news/main/list.jsp
System.out.println(request.getRealPath("/"));
//打印结果:F:\Tomcat 6.0\webapps\news\test
- - Servlet的转发和重定位
实现转发调用的是HttpServletRequest对象中的方法,转发时浏览器中的url地址不会发生改变,
转发时浏览器只请求一次服务器
转发能使用request带数据到跳转的页面
//。。。。。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过转发带数据
req.setAttribute("name","张三");
//服务器内部跳转
//这里的斜线表示项目的根目录
req.getRequestDispatcher("/send.jsp").forward(req,resp);
}
实现重定向调用的是HttpServletResponse对象中的方法,重定向时浏览器中的url地址会发生改变,重定向时浏览器请求两次服务器
重定向能使用ServletContext带数据到跳转的页面
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过重定向带数据
ServletContext servletContext = this.getServletContext();
//放入上下文对象里
servletContext.setAttribute("name","王二");
resp.sendRedirect("/send2.jsp");
- -【处处坑~~】创建监听器就报了一堆错:inside the host appBase has been specified, and will be ignored…
解:1.点开tomcat
2.还报错就往下操作…
在你的tomcat文件夹里应该会有backup文件夹,看到这个就删掉他!!
然后再conf–》Catalina–》localhost文件夹内里面的东西删除!!
参见:
- - Java项目报 Error configuring application listener of…错误
参见:
【3.14更新】