1.在Eclipse下,快捷键Ctrl+Shift+O,不能快速导包
1,是否导入API包
2,是否和Eclipse中自定义的快捷键发生冲突
3,是否和输入法发生冲突
对于以上三种情况,解决办法如下:
1,找到对应的API包导入即可。
2,在eclipse中点击Window,选择Preferences——General——Key,输入Ctrl+Shift+O,将自定义的快捷键进行修改,并Apply——OK即可。
3,输入法一般为搜狗输入法,选择设置,将对应的快捷键进行修改即可。
我遇到的情况是,输入法与输入法之间进行切换时的快捷键是Ctrl+Shift,所以每当试图导包时,就会转到输入法之间的切换,无法进行导包。
解决方法:选择Window——控制面板——时钟、语言和区域——区域和语言——键盘和语言——更改键盘——高级键设置——在输入语言之间——切换键盘布局——不要选中Ctrl+Shift——点击确定即可。
原文链接:https://blog.csdn.net/u012702708/article/details/44057875
2.如何关闭或启动mysql服务
https://jingyan.baidu.com/article/870c6fc37ca6feb03fe4beac.html
3.相对路径和绝对路径
(1)学生信息管理
request.getContextPath()拿到的是你的web项目的根路径,就是webContent(MyEclipse中是webRoot)
(2)实例测试:
web.xml配置(注意此处的url-pattern项)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>aab</display-name>
<welcome-file-list>
<welcome-file>a.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>com.java.test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/*</url-pattern><!-- 注意此处 -->
</servlet-mapping>
</web-app>
TestServlet.java文件:
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servletPath:"+req.getServletPath());
System.out.println("contextPath:"+req.getContextPath());
System.out.println("contextPath2:"+req.getServletContext().getContextPath());
System.out.println("pageInfo:"+req.getPathInfo());
System.out.println("uri:"+req.getRequestURI());
System.out.println("url:"+req.getRequestURL());
System.out.println("realPath:"+req.getServletContext().getRealPath("/"));
}
}
此时请求http://localhost:8080/testweb (url-pattern=/*)
打印出来的值为:
servletPath:
contextPath:/testweb
contextPath2:/testweb
pageInfo:null
uri:/testweb
url:http://localhost:8080/testweb
请求http://localhost:8080/testweb/abc 打印的值为:
servletPath:
contextPath:/testweb
contextPath2:/testweb
pageInfo:/abc
uri:/testweb/abc
url:http://localhost:8080/testweb/abc
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\
当我们修改web.xml为如下时(注意url-pattern的改变):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>aab</display-name>
<welcome-file-list>
<welcome-file>a.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>com.java.test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/abc/def/*</url-pattern><!-- 注意此处 -->
</servlet-mapping>
</web-app>
请求http://localhost:8080/testweb/abc/def/ghi/test.html (url-pattern=/abc/def/*)
打印的值为:
servletPath:/abc/def
contextPath:/testweb
contextPath2:/testweb
pageInfo:/ghi/test.html
uri:/testweb/abc/def/ghi/test.html
url:http://localhost:8080/testweb/abc/def/ghi/test.html
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\
通过观察打印结果,我们可以总结:
- getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。
- getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分
- getContextPath():获取项目的根路径
- getRequestURI:获取根路径到地址结尾
- getRequestURL:获取请求的地址链接(浏览器中输入的地址)
- getServletContext().getRealPath(“/”):获取“/”在机器中的实际地址
- getScheme():获取的是使用的协议(http 或https)
- getProtocol():获取的是协议的名称(HTTP/1.11)
- getServerName():获取的是域名(xxx.com)
- getLocalName:获取到的是IP
4.executeQuery、executeUpdate 和 execute
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
方法executeQuery
用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。
方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。返回值为-1代表更新不成功。
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
sql = "update ad_list set name = '小红' where id=1";
//sql = "select * from mysql.user";
int result = stmt.executeUpdate(sql);
if(result != -1){
System.out.println("更新 ok");
}
使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。
5.servlet中的doGet与doPost
一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方式提交)。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
再把业务逻辑直接写在doPost方法中。servlet碰到doGet方法调用直接就会去调用doPost因为他们的参数都一样。而且doGet方法处理中文问题很困难,要写过滤器之类的。
以上from 百度知道 @權寶兒
6.<a href="<%=request.getContextPath() %>/deleteStu.action?stuNo=<%=stu.getStuNo()%>">删除</a></td>
?在这里是路径和参数的分隔符
7.request.setattribute("","");是什么意思??
request.setattribute("","") 是放在JSP的内置对象的request里值 由于你的两个参数都为空字符串没有什么意义, 你可以这样
request.setAttribute(“result”,username);
在request对象中加入名为result的属性并附值为username,因为request对象是可以更改的,你可以在同一个请求中象这样访问这个属性。
虽然类似session,但与session是有所区别的,request.setAttribute设置的属性只能在当前request只使用,比如你在Action中设置result属性,需要到jsp页面中读取:
request.setAttribute(“result”,username);
requests.getRequestDispatcher(“result.jsp”).forward(request, response);
jsp页面获取该值:
request.getAttribute( “result”);
return super.execute();是返回父类调用execute()方法的值
8.
request.getRequestDispatcher()与request的setAttribute()
关于request.getRequestDispatcher()的两个方法以及request域
https://blog.csdn.net/h2503652646/article/details/83661347
request的setAttribute()怎么用的?
https://blog.csdn.net/qq_41084324/article/details/82856391