1 config.properties 这样的properties是个文件,是用java.util.properties这个类来读取的。就是用问题4中的那种方法。
2 java.util.properties类就是用来读取一个文件。一个key=value对应的这样文件。读出来作为一个集合比较方便
4 properties是java.util.properties类的对象。load是读取文件的方法。config.getServletContext().getResourceAsStream(MAPPINGS_FILE)这就是指的你上面的
MAPPINGS_FILE="/WEB-INF/config.properties" 是指定load的路径的。
2 java.util.properties类就是用来读取一个文件。一个key=value对应的这样文件。读出来作为一个集合比较方便
4 properties是java.util.properties类的对象。load是读取文件的方法。config.getServletContext().getResourceAsStream(MAPPINGS_FILE)这就是指的你上面的
MAPPINGS_FILE="/WEB-INF/config.properties" 是指定load的路径的。
用一个servlet来处理请求,发送到action。但是struts实现的更漂亮
下面的那段Servlet处理,那段Servlet应该放到Tomcat的什么位置?
答:放到web_inf/classes下面。其实你提交后,将提交到broker所影射的servlet。即BrokerServlet。问题2:既然表单以Post提交,为什么Servlet里面还要用 doGet 方法,在doGet方法里面再调用doPost,
但整个serlet里面只定义了doGet方法,但没有一处地方调用这个方法,那么doGet是否自动执行,
为什么?
答:doGet和doPost都是系统自动调用的,在这里,只不不过是定义了,当一get方式提交后,也要掉用doPost.
问题3:为什么 doPost方法要放到doGet方法里面,由doGet调用?
答:这是开发者定义的,他希望在表单已 get方式提交时,也调用doPost.问题4:RequestDispatcher是一个什么类,用在这里的作用是什么?这个你自己查一下就知道了。
或者说是个标准。我认为。http://211.162.191.3/nsfk/Upload/Struts%20In%20Action.pdf
参照icecloud(冰云) 和wjmmml(笑着悲伤)两位大侠的答案,我复述如下:问题1:html 表单的action="/Book/Broker" 没有具体制定一个提交到的文件,为什么能提交到下面的那段Servlet处理,那段Servlet应该放到Tomcat的什么位置?
答:通常MVC结构的应用会在WEB-INF\web.xml中设置了Servlet的影射名和对应类名。形如:
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>com.javadl.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ForumAdminServlet</servlet-name>
<url-pattern>/admin/index</url-pattern>
</servlet-mapping>
其实就是放在WEB-INF\classes下的类.问题2:既然表单以Post提交,为什么Servlet里面还要用 doGet 方法,在doGet方法里面再调用doPost,但整个serlet里面只定义了doGet方法,但没有一处地方调用这个方法,那么doGet是否自动执行,为什么?
答:作者提供doGet方法应是考虑通用性问题,--不管系统调用那种方法实现的东西是一样的。呵呵,个人认为:如果是确定全部都用Post提交的,其实是可以不要doGet方法的。问题3:为什么 doPost方法要放到doGet方法里面,由doGet调用?
答:不管系统调用那种方法实现的东西是一样的,不会再写一次吧?:)问题4:RequestDispatcher是一个什么类,用在这里的作用是什么?
答:具体说不是很清楚,大致意思是调用下一个对象(JSP或Servlet),把当前的HttpServletRequest 和 HttpServletResponse 一并转过去,呵呵,如果说错,有了正确的答案也请告诉我。
----------------------------------------------
问题1:String MAPPINGS_FILE="/WEB-INF/config.properties"; 这个定义,是说明我要在WEB-INF里面 建立一个config.properties的文件,还是先建立一个config的文件夹,在里面再建立一个properties的文件名?我看不懂,还有这个文件名的后缀应该是什么呢?
答:是要在WEB-INF里面 建立一个config.properties的文件,后缀就是properties。
它是TXT文件,内容形如KEY=Value的一个列表,#开头的为注释,如下:
# Mapping of actions to destinations
Buy=/jsp/Buy.jsp
Sell=/jsp/Sell.jsp
Cancel=/jsp/Cancel.jsp问题2:Properties类有什么用?
答:就是对上述的属性文件的一个操作类。问题3: init()方法是否自动执行?为什么第一段例子不用init()方法?
答:当Servlet被载入一个实例时,init()被执行。第一段的例子其实是调用了父类HttpServlet类的init()方法,因为它没有需要在init()方法里加入额外的功能。问题4:properties.load(config.getServletContext().getResourceAsStream(MAPPINGS_FILE)); 这句代码太复杂,请帮我详细解决。
答:其实就是载入常量MAPPINGS_FILE指定的属性文件的内容。
现时在WEB-INF下的WEB.XMl中定义了
<servlet>
<servlet-name>BrokerServlet</servlet-name>
<servlet-class>simple.BrokerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BrokerServlet</servlet-name>
<url-pattern>/Book/Broker</url-pattern>
</servlet-mapping>
当URL指向/Book/Broker时它就运行BrokerServlet(也就是simple.BrokerServlet)
这个关系你测试一下,就知道了。