Java学习之路 Servlet

Servlet解压之后要配置环境变量:CATALINA_HOME-》安装目录 JAVA_HOME 也要配好

启动:%CATALINA_HOME%bin\startup.bat

关闭:%CATALINA_HOME%bin\shutdown

Java学习之路 Servlet

web.xml中配置:第一行和第三行是随意的一个名字,只要一样就行,和其他servlet进行区分,作为url到class的沟通桥梁,第二行是你实现的servlet类名称,一定要带上前置的包名,第四行是用户输入在浏览器上的地址(前置http://localhost:8080

中文乱码:Java学习之路 Servlet设置UTF8即可

Java学习之路 ServletJava学习之路 Servlethttp://localhost:8080/testweb/HelloForm?first_name=ZARA&last_name=ALI

Java学习之路 Servlet

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet    

javax.servlet.jsp.jstl.core 同

原因:在WebContent.WEB-INF.lib下没有生成对应的依赖包

解决:Project-reference-Deployment Assembly-Add-Java Build Path Entries-全选或者选择缺少的部分

No converter found for return value of type: class  :没导入相应的jackson jar包

初始化组件[[email protected]]失败:其实就是jar包冲突,经过排查发现jackson.mapper这个包有问题,除去即可

部署tomcat项目之后修改源文件不生效的原因:除去各种项目保存配置的问题之外,要命的就是项目存在一些莫名其妙的错误,你没找到----还是能运行,但是eclipse不帮你更新编译了,所以用的还是旧版本的源码编译出的class文件。

解决方法:

在项目的proprites选项中如下图配置,将Abort build when error 的勾去掉,然后重新启动Tomcat即可

Java学习之路 Servlet

查看日志:https://www.cnblogs.com/herd/p/4985754.html

500:写的服务器程序有问题,比如sql语句是错的

linux下部署tomcat和重新部署tomcat的方法:

将eclipse工程导出的wav包放到tomcat的webapps目录下,启动tomcat即可

重新部署:删除webapps下的同名目录,删除wav包,重新放入即可

Java学习之路 Servlet

Java学习之路 Servlet

这里设置了前缀和后缀。所以改控制器代码

Java学习之路 Servlet

即可

Java学习之路 Servlet

这里的url-pattern是错的,要在后面再加/*,不然只能匹配learn-test这一个请求

这里的learn_test和ServerAndDB都在ServerAndDB这个目录下

Java学习之路 Servlet

多一个servlet可能可以多200连接数

Java学习之路 Servlet

返回一个jsp的典型方法:ModelAndView,或者直接返回一个Sting类型,值是jsp文件路径

转发和重定向:

Java学习之路 Servlet

上图是转发,其页面变换只发生在服务器内部,外部看不出这个过程。

Java学习之路 Servlet

地址栏还是hello.test

Java学习之路 Servlet

效果是一样的。对jsp的直接访问相当于转发

Java学习之路 Servlet

这样转发也可以,更简练可读

重定向:

Java学习之路 Servlet

Java学习之路 Servlet

地址栏变了

Java学习之路 Servlet

这样也行

如果用一个返回字符串,最好跟model配合使用,model指定转发/重定向的新参数,返回的字符串指定新路径

Java学习之路 Servlet

url-pattern要用/+通配符表示子路径所有请求才行。

Java学习之路 Servlet

这里的result路径是从Tomcat项目根目录开始。Spring配置的时候有前后缀所以不用这么麻烦。

关于Java学习之路 Servlet

mySpring.xml和struts.xml,部署到Tomcat上之后都会自动帮我们放到classes文件夹下Java学习之路 Servlet

注意:这两个xml的位置应该和com.c72是平级的,同属src

Java学习之路 Servlet

这里的默认设置导致我们result指定的url是一个转发请求

Java学习之路 Servlet

一个controller要声明一个入口方法,如果内部有很多方法都要调用,我们不可能每次都去声明新的action。用通配符来简化配置。

Java学习之路 Servlet

Java学习之路 Servlet

对于表单参数的获取,基本是自动地:

1.自动装配和jsp中表单参数名一样的属性(params拦截器),这是直接对一个变量赋值,但是我们有时候没必要特地把一个类成员的变量拿出来装配好再赋回去,有点绕。

如<input type="text" name="name"/>

2.自动装配ognl描述的属性,这是直接访问一个成员类变量,再对变量的成员赋值,这样很直接但是jsp写得麻烦

如<input type="text" name="user.name"/>

这里会自动对控制器类内的user变量进行装配。

3.控制器实现ModelDriven<T>接口,重写getModel()方法,返回一个要装配的类成员,放到栈顶

Java学习之路 Servlet

三种action写法:

实现action接口、继承actionsupport(推荐)、POJO类

自定义拦截器:

Java学习之路 Servlet

有点类似AOP的反射过程

不能直接在地址栏输入jsp名称访问WEB-INF/jsp文件夹下的jsp 解决方法

如果不通过servlet作为中间物转发到jsp,只能放到WEB-INF外面,这时候又要从根开始寻找action

Java学习之路 Servlet